用PHP代码替换字符串

时间:2017-01-05 01:49:17

标签: php

我正在尝试使用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]

3 个答案:

答案 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]", "&lt;?php echo 'hello'; ?&gt;", $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);