[英]Replacing string with PHP code
我正在嘗試使用str_replace
函數用某些PHP代碼替換某個字符串。 我想用<?php echo "hello"; ?>
替換"[GOOGLE]"
<?php echo "hello"; ?>
<?php echo "hello"; ?>
這是我到目前為止的內容:
$text = str_replace("[GOOGLE]", "<?php echo 'hello'; ?>", $text);
運行此代碼時,它會替換[GOOGLE]
,但是替換不會顯示在瀏覽器中。 當我去查看頁面的源代碼時,替換為: <?php echo 'hello'; ?>
<?php echo 'hello'; ?>
出於某種原因,您可以看到PHP標記。 但是,頁面上沒有任何顯示。 我該如何解決此問題,以便用[GOOGLE]
hello [GOOGLE]
替換[GOOGLE]
? 注意:我不想用實際的“ hello”字符串替換str_replace
函數中的PHP代碼,我想使用PHP代碼來完成此操作。 現在,我正在嘗試簡單的事情。 我的目標是用if / else語句和CMS的廣告代碼替換[GOOGLE]
。
您的echo
似乎放錯了位置。 在我看來,您想輸出將“ [GOOGLE]”替換為“ hello”的結果,在這種情況下(1)執行替換,然后(2)回顯結果。 也許:
$text = str_replace("[GOOGLE]", "hello", $text);
echo $text;
您在瀏覽器中看不到它的原因是替換, <?php echo 'hello'; >
<?php echo 'hello'; >
在尖括號內。 尖括號對HTML來說是特殊的,因為它們表示瀏覽器要執行的操作。 例如, <b>
表示“開始加粗文本”。 當瀏覽器看到“ <?php ...?>”時,它認為該標簽。 它不知道如何處理標記,因此未呈現任何內容。 但是,它確實保留在源代碼中,因為該文本確實是源代碼的一部分。
如果您確實想看到"<?php echo 'hello'; ?>"
echo'hello "<?php echo 'hello'; ?>"
那么您需要轉義尖括號:
$text = str_replace("[GOOGLE]", "<?php echo 'hello'; ?>", $text);
此處,尖括號已替換為其轉義版本:“ <”變為“&lt;”。 並且“>”變為“&gt;”。 當然,您可能不願意手動執行此操作。 在這種情況下,請考慮使用htmlspecialchars()
。
我猜你想在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
警告:強制每個用戶提供的內容都必須這樣做,因為還可以解釋javascript,並且有人可以用它來做討厭的事情(XSS)
我現在從簡單的東西開始學習如何做。 我真的想用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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.