2011-04-15 4 views
0

Когда я получить цитаты из мета-тега описания этого сайта: http://mashable.com/2011/04/14/google-computers-regret/метаописание кодирования - цитируют возвращаемые в качестве вопросительных знаков PHP

кавычки вокруг слова «сожаление» возврат в виде знаков вопроса.

Я использую следующий код в то время как $ Обл возвращается метаданные:

if(mb_detect_encoding($str, 'UTF-8, ISO-8859-1', true) != 'ISO-8859-1') $str = utf8_decode($str); 
$str = strtr($str, get_html_translation_table(HTML_ENTITIES)); 
$str = strip_tags(html_entity_decode(htmlspecialchars_decode($str, ENT_NOQUOTES), ENT_NOQUOTES, "UTF-8")); 
$str = html_entity_decode($str, ENT_QUOTES,"UTF-8"); 

Как я могу это исправить?

+0

Что вы пытаетесь достичь? – Gumbo

ответ

0

Это примитивное исправить, и я уверен, что есть лучший способ сделать это, но:

$str = str_replace(array("“" , "”") , '"' , $str); 

Это должно заменить эти стилизованные кавычки с простой кавычкой и предотвратить проблемы со знаком вопроса.

(Happy учиться лучше, умнее, решения, чем этот неуклюжий один.)

Пересмотренный на основе комментариев ниже:

$str = str_replace(array("\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x98", "\xe2\x80\x99") , '"' , $str); 

Вы можете заменить несколько шаблонов (держа в массиве) с одна и та же замена str, используя эту функцию, - лучше, чем вынуждать массив с тем же содержимым или создать неуклюжую функцию, когда она не нужна.

+0

PHP интерпретирует эти «стилизованные» кавычки как обычные котировки для меня и не проводит замену – John

+0

Я выяснил, что эти цитаты называются «кудрявыми цитатами» и были созданы Microsoft конечно ... Вот функция, которая заменит их: 'function fixcurly ($ string) {$ search = array (" \ xe2 \ x80 \ x9c "," \ xe2 \ x80 \ x9d "," \ xe2 \ x80 \ x98 "," \ xe2 \ x80 \ x99 "); $ replace = array ('' ',' '', '' ',' ''); return str_replace ($ search, $ replace, $ string); } ' – John

 Смежные вопросы

  • Нет связанных вопросов^_^