我正在尝试使用str_replace
函数用某些PHP代码替换某个字符串。我想将"[GOOGLE]"
替换为<?php echo "hello"; ?>
这是我到目前为止所拥有的:
$text = str_replace("[GOOGLE]", "<?php echo 'hello'; ?>", $text);
运行此代码时,它会替换[GOOGLE]
,但替换不会显示在浏览器中。当我去查看页面的源代码时,替换是:<?php echo 'hello'; ?>
您可以出于某种原因看到PHP标记。但是,页面上不显示任何内容。如何更正此问题以便将[GOOGLE]
替换为hello?注意:我不想将str_replace
函数中的PHP代码替换为实际的&#34; hello&#34;字符串,我想用PHP代码来做这件事。现在,我想尝试一些简单的事情。我的目标是使用if / else语句和我的CMS的广告代码替换[GOOGLE]
。
答案 0 :(得分:3)
您的echo
似乎放错了地方。在我看来你想输出用“你好”替换“[GOOGLE]”的结果,在这种情况下(1)执行替换然后(2)回显结果。也许:
$text = str_replace("[GOOGLE]", "hello", $text);
echo $text;
您在浏览器中没有看到它的原因是替换,<?php echo 'hello'; >
在有角度的括号内。有角度的括号对HTML来说是特殊的,因为它们表示浏览器要执行的操作。例如,<b>
表示“开始加粗文本”。当浏览器看到“&lt;?php ...?&gt;”时它认为是一个标签。它不知道如何处理标记,因此不会显示任何内容。但是,它仍然保留在源中,因为该文本确实是源的一部分。
如果您真的想要看"<?php echo 'hello'; ?>"
,那么您需要摆脱有角度的括号:
$text = str_replace("[GOOGLE]", "<?php echo 'hello'; ?>", $text);
此处有角度的括号已被其转义版本替换:“&lt;”成为“&amp; lt;”和“&gt;”成为“&amp; gt;”。当然,您可能会厌倦手动执行此操作。在这种情况下,请考虑使用htmlspecialchars()
。
答案 1 :(得分:1)
我想你想在html页面上显示php代码。
您需要使用htmlspecialchars()
,因为此字符串将部分解释为html标记。
在你的例子中,它将是:
$text = str_replace("[GOOGLE]", "<?php echo 'hello'; ?>", $text);
// later when producing html...
echo htmlspecialchars($text, ENT_QUOTES); //default encoding is UTF-8
警告:强制要求每个用户提供的内容都是btw,因为javascript也可能被解释,有人可能会用它做一些讨厌的事情(XSS)
答案 2 :(得分:0)
不要这样做。我现在开始用简单的东西来学习如何做到这一点。我想用Adsense代码替换[GOOGLE]以在我的CMS中使用
将您的Adsense代码放入包含或变量或其他内容中,然后执行以下操作:
$text = str_replace("[GOOGLE]", file_get_contents('google-analytics.html'), $text);
或:
$googleAnalytics = '<script> the code Google gives you </script>';
$text = str_replace("[GOOGLE]", $googleAnalytics, $text);