preg_replacing акцентированные символы с альтернативой HTML Entity - PullRequest
1 голос
/ 13 декабря 2010

Я пытаюсь использовать базу данных для хранения набора LONGTEXT, который я ввожу в базу данных, используя форму.Но когда я помещаю такие символы, как é, они выводятся из базы данных как , есть ли способ преобразовать все акцентированные символы в объекты HTML с использованием PHP перед его отправкой в ​​базу данных?

Мне известно о htmlentities ();, но это также заменяет такие символы, как <, которые мне не нужны, поскольку он не загружает HTML, когда содержимое отображается на странице.

Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 13 декабря 2010

Всякий раз, когда вы видите такие вещи, как , это признак того, что у вас несоответствие кодировки.

Если у вас есть база данных и все HTML настроены в кодировке UTF-8, у вас не возникнет проблем. Скорее всего, ваш HTML или база данных настроены на использование Latin-1 (ISO 8859-1), а другой UTF-8 или наоборот.

Вы можете решить эту проблему, объединив один набор символов. Я лично предпочитаю UTF-8, так как он универсален. Однако, если вы не можете сделать это, вы можете использовать PHP для скрытого перехода между UTF-8 и Latin-1, используя следующие функции.

UTF-8 до Latin-1:

$latin_string = utf8_decode($unicode_string);

Латинский-1 до UTF-8:

$unicode_string = utf8_encode($latin_string);

Если вы закодируете свои данные перед отправкой в ​​базу данных и декодируете их перед отображением или наоборот, в зависимости от конфигурации базы данных / html, ваша проблема будет решена.

В качестве другой альтернативы, если на вашем сервере доступно расширение PHP iconv, вы можете использовать его для точной транслитерации или преобразования в обычный ASCII.

http://www.php.net/manual/en/function.iconv.php

1 голос
/ 13 декабря 2010

Похоже, у вас есть база данных, использующая кодировку, которая не поддерживает ваши акцентированные символы. Посмотрите на кодировку базы данных и таблицы и убедитесь, что они используют кодировку, удобную для Unicode. Я думаю, что наиболее распространенной предпочтительной кодировкой для базы данных и таблицы является просто UTF-8 Unicode (utf8).

См. http://dev.mysql.com/tech-resources/articles/4.1/unicode.html для получения некоторой информации о UTF8 и кодировании и сопоставлениях в MySQL. Вы не указали свою базу данных, но приложение должно быть одинаковым независимо.

0 голосов
/ 13 декабря 2010

Может быть, это?http://www.php.net/manual/en/function.utf8-decode.php

Некоторые комментарии пользователей могут быть именно тем, что вы ищете (utf8toentities и т. Д.)

...