str_replace не работает в HTML-кодах - PullRequest
0 голосов
/ 19 декабря 2011

Я работаю с формой, одним из ее полей является текстовая область RTF (jWYSIWYG), которая автоматически заполняется некоторой информацией базы данных при загрузке страницы, и все это с помощью инфраструктуры Symfony.Этот RTF-редактор может добавить некоторые HTML-теги, такие как <p>, <b> и т. Д.

Проблема начинается, когда я пытаюсь узнать, была ли изменена текстовая область перед отправкой формы: что я получаю из $request состоит в том, что все html-теги закодированы как &lt;p&gt;, &lt;b&gt; и т. Д. Я попытался заменить это выражение на символы < и >, чтобы я мог сравнить его с сохраненными данными.

$codes = array('&gt;','&lt;');
$chars = array('<'   ,'>' );
return str_replace($codes,$chars,$text);

но эта функция возвращает мне тот же массив, который я передаю в качестве параметра функции str_replace.Что я делаю неправильно?У кого-нибудь была такая же проблема?

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

Попробуйте эту функцию вместо str_replace: http://www.php.net/manual/en/function.htmlspecialchars-decode.php

0 голосов
/ 20 декабря 2011

Наконец обнаружена проблема.Не было о тегах HTML!проблема в том, что (я не знаю почему) jWYSIWYG добавляет около 24 пробелов в конце поля, поэтому очевидно, что сравнение сохраненных и новых данных отличается.введите таким образом:

$text = rtrim($text);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...