помочь избавиться от специальных символов HTML в базе данных - PullRequest
2 голосов
/ 02 марта 2011

Я перенес свой сайт из CMS Interspire в Joomla!CMS.Мне удалось перенести всю базу данных статей, но у некоторых из них есть странная проблема - когда я захожу на страницу из joomla, заголовок содержит HTML-сущности, такие как ’.

Как вы можете догадаться изCMS, которые я использую, я полагаюсь на PHP в качестве серверной части и MySql для своей базы данных.

Я попытался просмотреть названия статей в базе данных с помощью htmlspecialchars_decode AND html_entity_decode, чтобыизбавиться от них, но это не имело никакого эффекта.

Если я просто возьму пример из БД и выведу его, он будет выглядеть нормально: каково ваше удовольствие, стиль манчестерской лазаньи или пиццы?

, если я перейду на страницу статьи в Joomlaбудет выглядеть так: What’s Your Pleasure, Lasagna Or Pizza Manchester Style?

Когда я захожу в PhpMyAdmin, чтобы напрямую увидеть, что находится в базе данных, это содержимое заголовка: What’s Your Pleasure, Lasagna Or Pizza Manchester Style?

Я даже пытался удалитьсимвол с:

str_replace("’","",$title);

или замените его следующим образом

str_replace('’',"'",$title);

, но ничего.Когда я попытался закодировать это снова вместо того, чтобы расшифровать это (только, чтобы видеть, нахожусь ли я в правильной БД), это работало и закодировало это снова ...

Пожалуйста, я был бы рад иметь любые новые идеи... Спасибо, Янипан

Ответы [ 3 ]

4 голосов
/ 28 ноября 2012

Попробуйте установить кодировку на cp1252. Это сработало для меня:

$decoded = html_entity_decode($your_string, ENT_QUOTES, 'cp1252');

1 голос
/ 02 марта 2011

Вероятно, вам лучше всего искать и заменять в самой базе данных, а не пытаться делать это с помощью php.Поиск и замена в mysql выполняется следующим образом:

update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);

Так что ваш должен выглядеть примерно так:

update ARTICLES set TITLE = replace(TITLE, '’', '\'');

Дайте этому шанс.

0 голосов
/ 15 июня 2011

Нужна дополнительная информация


  1. Какая кодировка символов в вашей базе данных?Это & или ; может отличаться от типичного ASCII.
  2. Возможно, PHP / Joomla дважды кодирует вашу строку.Посмотрите на исходный код страницы браузера и найдите текст в созданном HTML.Вместо What’s это может быть одно из следующих значений:
    1. What&rsquo&59;s
    2. What&38;rsquo&59;s
    3. What&rsquo&#59;s
...