[英]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)
來查看此內容,然后將看到: <
代替<
。
要將其解碼回去,只需使用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.