簡體   English   中英

str_replace()無法正常工作

[英]str_replace() doesn't work as expected

我有一個像這樣的字符串:

$string = "somehting<br><br>";

當我這樣嘗試str_replace()

echo str_replace("<br>","<c>",$string);

輸出字符串完全不變。

我試過的

echo mb_detect_encoding($string); // returns UTF-8
var_dump(strpos($string, "<br>")); // bool(false)

我以前用html dom節點類編輯了字符串,現在我真的不知道出什么問題了。

我試圖用真實的字符串在sandbox.onlinephpfunctions.com上重現該問題,並且它可以工作。

因此,我無法重現該問題。

事實證明。 您的字符串使用html-entities編碼。 因此,您可以通過簡單地查看源代碼或使用highlight_string($yourString)來查看此內容,然后將看到: &lt; 代替<

要將其解碼回去,只需使用html_entity_decode() 例如:

$string = str_replace("<br>","<c>", html_entity_decode($string));
highlight_string($string);

確實將<br>替換為<c> 它只是顯示為空白。 如果添加htmlspecialchars() ,則可以看到它確實被替換了。

<?php
$string = "somehting<br><br>";
$string = htmlspecialchars(str_replace("<br>","<c>",$string));

var_dump(strpos($string, htmlspecialchars("<c>"))); // int(9)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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