Помочь избавиться от специальных символов HTML в базе данных

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

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

Я попытался просмотреть заголовки статей в базе данных с помощью htmlspecialchars_decode А ТАКЖЕ 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 ответа

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

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

Вероятно, вам лучше всего искать и заменять в самой базе данных, а не пытаться делать это с помощью 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, '’', '\'');

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

Нужно больше информации


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