2015-07-30 5 views
1

У меня есть строка, как это:str_replace() не работает, как ожидалось

$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 node class до и теперь я действительно не знаю, что это неправильно.

Я попытался воспроизвести проблему на sandbox.onlinephpfunctions.com с реальной строкой, и она работает.

Так что я неспособен воспроизвести проблему.

+0

Если вы хотите удалить HTML-теги, то почему бы не использовать 'strip_tags()' – Hassaan

+0

Я хочу, чтобы заменить их не удалить их – JTC

+0

Он работает, как ожидалось. https://eval.in/408878 –

ответ

1

Так получилось. Ваша строка кодируется html-сущностями. Таким образом, вы видите это, просто изучая исходный код или используя highlight_string($yourString), а затем вы увидите: &lt; вместо <.

Чтобы декодировать его, просто используйте html_entity_decode(). В качестве примера:

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

Он заменяет <br> на <c>. Он просто отображается как пустой. Если вы добавите htmlspecialchars(), вы увидите, что он заменил.

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

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

Почему я получил downvoted? – Daan

Смежные вопросы