如何让PHP代码以纯文本形式展示,而非被服务器解析执行?
解决方案
独立PHP文件中使用的方案
你之前直接用<code>标签包裹无效,核心原因是PHP是服务端执行语言,只要你的代码写在<?php ?>标记内,服务端会在输出内容到浏览器之前就先执行对应代码,根本不会走到浏览器识别<code>标签的步骤。
正确做法是用PHP的nowdoc语法定义要展示的代码字符串(不需要转义内部的引号、PHP标记),再通过htmlspecialchars()函数转义特殊字符后输出,同时用<pre><code>标签保留代码的换行缩进格式,示例代码如下:
<?php // 用nowdoc语法定义要展示的原始代码,内部内容不会被PHP解析执行 $display_code = <<<'RAW_CODE' <!-- Ad Code - DO NOT MODIFY --> <?php function isUsignMobileDeviceTrue() { return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); } // If the user is on a mobile device, show ads if(isUsignMobileDeviceTrue()): ?> <?php echo file_get_contents("https://www.example.com/ad1.php"); echo 'https://www.example.com'; ?> <?php endif;?> <!-- //Ad Code End--> RAW_CODE; // 转义特殊字符后输出,保留代码格式 echo '<pre><code>' . htmlspecialchars($display_code) . '</code></pre>'; ?>
WordPress场景使用的方案
- 如果是在WordPress主题模板、自定义页面模板中插入展示代码,直接用上面的方案即可。
- 如果是在文章编辑器中插入代码,不要直接在自定义HTML块内写PHP代码,使用编辑器自带的代码块区块插入内容即可避免代码被执行。
内容的提问来源于stack exchange,提问作者r0naldinio
相关产品推荐
相关产品推荐

