簡體   English   中英

用PHP代碼替換字符串

[英]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]", "&lt;?php echo 'hello'; ?&gt;", $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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM