PHP печатает апостроф (обратные кавычки) и приводит к искаженному HTML

У меня есть строка, хранящаяся в массиве: But I Don't

и когда я печатаю его на своей веб-странице, я получаю: But I Don’t

Я пробовал htmlentities(), htmlspecialchar(), оба с включенным ENT_QUOTES.

Я понимаю, что могу заставить свою функцию выполнять замену строки каждый раз, когда я печатаю, но, конечно же, в PHP есть способ, с помощью которого я могу просмотреть свой массив, распечатать каждую строку и преобразовать все специальные символы (не только кавычки) в правильные HTML?

Я просто озадачен тем, что некоторые апострофы не прошли очистку строк.

РЕДАКТИРОВАТЬ

Оказывается, это все-таки была обратная галочка, поэтому строка была такой: «Но я не делаю».

Есть ли простой способ дезинфицировать это и в PHP?


person FaultyJuggler    schedule 07.06.2013    source источник
comment
Проблема здесь в кодировке строки. ENT_QUOTES не решит эту конкретную проблему. Первое, что вам нужно выяснить, это исходная кодировка. Это не UTF-8? Попробуйте форсировать UTF-8 с помощью htmlentities($string, ENT_QUOTES, 'UTF-8');   -  person hw.    schedule 07.06.2013
comment
ты избегаешь апострофа, как But I Don\'t?   -  person rogMaHall    schedule 07.06.2013
comment
У вас может быть печально известная ошибка byte order mark, более известная как The BOMb. (бом) - проверьте свой закодированный файл, посмотрите, является ли он UTF-8 (с отметкой порядка байтов или без нее). Никогда не знаешь.   -  person Funk Forty Niner    schedule 07.06.2013
comment
И вот, я погуглил (It=’) для вас и нашел это: stackoverflow.com/questions/2292004/   -  person Funk Forty Niner    schedule 07.06.2013
comment
Вы, ребята, заставили меня задуматься, я всегда забываю, что иногда бывают дикие обратные галочки, я дважды проверил источник данных и, конечно же, это был не апостроф, а обратная галочка. Как ни странно, это был текст, скопированный с предыдущего вывода веб-страницы.   -  person FaultyJuggler    schedule 07.06.2013
comment
@rogMaHall Ему не нужно было этого избегать. ОП будет делать это till the cows come home. Нужно позаботиться о at the source.   -  person Funk Forty Niner    schedule 07.06.2013
comment
@FaultyJuggler Аааа, infamous TICK, каждый раз он будет выбивать из тебя БАЙТ! Рад, что вы нашли свой bug ;-) Хорошо, я запомню это как возможный answer в следующий раз.   -  person Funk Forty Niner    schedule 07.06.2013
comment
@FaultyJuggler Вам нужно быть более осторожным, когда вы копируете / вставляете что-то из Интернета, вы никогда не знаете, что поймаете! Эй, это случается с лучшими из нас (один раз в голубой луне). Ваше здоровье!   -  person Funk Forty Niner    schedule 07.06.2013
comment
@FaultyJuggler Что касается вашего другого вопроса "Is there an easy way to sanitize this in PHP as well?", я не смог найти ничего конкретного по этому вопросу. Вы могли бы поймать его у ворот и использовать preg_replace или str_replace в крайнем случае, я полагаю.   -  person Funk Forty Niner    schedule 07.06.2013
comment
@FaultyJuggler Вот, покрутите $string = str_replace(array(`,chr(96)),array(','), $string); (извините, не смог выделить код, он уже содержит символ галочки).   -  person Funk Forty Niner    schedule 07.06.2013