Intereting Posts
Как отличить вызов командной строки и веб-сервера? Печать встроенной строки PHP вместо стирания всей страницы Каковы плюсы и минусы определения класса Controller через URL-адрес или наличие сценария для каждого контроллера? Стандартная практика обнаружения мобильных устройств и страниц подачи в PHP и jQuery Добавление проверки, чтобы проверить, не выбран ли переключатель Все локальные страницы через WAMP заблокированы? PHP / Javascript: запоминание состояния полей формы и формы с помощью файлов cookie PHP – заменить строку на переменную с именем like string Получите данные на стене или стене группы facebook для использования на личном веб-сайте Начало работы с SAML и PHP Сводный синтаксис PHP PHP, как лучше всего редактировать файл RTF Найти число вхождений определенной строки в группе символов WITH A CATCH is_numeric, intval, ctype__digit .. можете ли вы на них положиться? Какой тип API это?

str_replace не работает для некоторых случаев

Я использую curl для получения html и сохранения его в $ content. Затем я пытаюсь str_replace, это не работает:

echo str_replace('<a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications','OK',$content);

Но когда я пытаюсь распечатать $ content и скопировать источник и снова сохранить его в $ content, он работает:

echo $ content; Затем я копирую печатную версию и сохраняю ее в $ content снова:

$content='It is <a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications';

С новым $ content работает надстройка выше.

Solutions Collecting From Web of "str_replace не работает для некоторых случаев"

Попытайтесь также поставить «\». Я думаю, что дело в этом. Я не думаю, что тег «style» не имеет ничего, что отличает его.

Мое предположение – дополнительные пробелы или новая линия или аналогичные, попробуйте заменить куски .. например

 str_replace('<a onclick="get_content(\'http://en.wikipedia.org\');" ','OK',$content); str_replace('" style="cursor: default;">Dojo</a> Applications','OK',$content); 

и попытайтесь разобраться, где он терпит неудачу, тогда вы можете отследить, почему

Это работает для меня:

 <?php $content='it is <a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications'; echo str_replace('<a onclick="get_content(\'http://en.wikipedia.org\');" style="cursor: default;">Dojo</a> Applications','OK',$content); 

Таким образом, у вас, вероятно, есть фактические строки в строках, и они не закодированы в одном формате, например, один из них – \n (Linux), а другой – \r\n (Windows). Вы можете нормализовать обе строки перед сравнением:

 <?php $content = strtr($content, array( "\r\n" => PHP_EOL, "\r" => PHP_EOL, "\n" => PHP_EOL, )); 

В любом случае PHP имеет отличные функции для обработки HTML . Я бы не рекомендовал регулярные выражения для задачи: они ненадежны и очень трудно получить почти право.