Intereting Posts
Вывод пользовательского поля WordPress после the_content Как получить значение из ответа SOAP с помощью PHP? Захват разрешения экрана и отображение результатов на основе размера Исключить скрытые файлы из скандинава как удалить повторяющиеся значения в таблице mysql Использование OpenGraph с PHP (запросы cUrl для действий) PHP REST API Авторизация для клиентских приложений Добавление элемента формы динамически с помощью javascript – не отправление Как я могу безопасно обнаруживать SSL в CakePHP за обратным прокси-сервером nginx? Почему strip_tags не работает в PHP? https запрос в другой домен с перенаправлением с использованием php Что означает «=>» в PHP? Не удается отправить сеанс cookie – уже отправленные заголовки Передача истинного / ложного логического значения String в аргумент функций Функция PHP: найти имя переменной аргумента и номер строки вызова функции

Использование единой «умной цитаты» в моих данных JSON – это нарушение PHP-скрипта

У меня есть PHP-скрипт, который читается в некоторых данных JSON, предоставленных клиентом. Данные JSON предоставили в нем одну «умную цитату».

Пример:

{ "title" : "Lorem Ipsum's Dolar" } 

В моем сценарии я использую небольшую функцию для получения данных json:

 public function getJson($url) { $filePath = $url; $fh = fopen($filePath, 'r') or die(); $temp = fread($fh, filesize($filePath)); $temp = utf8_encode($temp); echo $temp . "<br />"; $json = json_decode($temp); fclose($fh); return $json; } 

Если я utf8 закодировать данные, когда я повторяю это, я не вижу ничего, где должна быть цитата. Если я не кодирую данные utf8, когда я повторяю это, я вижу забавный символ знака вопроса

Любые мысли о том, как на самом деле увидеть правильный характер?

Благодаря!

Возможно ли, что сервер отправляет json-данные в кодировку, такую ​​как windows-1252? У этой кодовой страницы есть некоторые символы умного кода, где iso-8859 имеет контрольные символы. Не могли бы вы попытаться использовать iconv("windows-1252", "utf-8", $temp) вместо utf8_encode . Еще лучше было бы, если сервер уже отправил кодировку utf-8 json, так как это рекомендуемая кодировка для rfc4627.

Проблема больше на стороне, которая создает файл JSON. Там вы должны убежать от 'by \'

Если вы не можете изменить эту часть, вы должны сделать это с помощью addlashes:

 $temp = fread($fh, filesize($filePath)); $temp = utf8_encode($temp); echo $temp . "<br />"; $temp = addslashes($temp); $json = json_decode($temp); 

Можете ли вы, возможно, заменить строку, считая данные utf8?

 $text = str_replace($find, $replace, $text); 

Ищете символы ниже?

  '“' // left side double smart quote 'â€' // right side double smart quote '‘' // left side single smart quote '’' // right side single smart quote '…' // elipsis '—' // em dash '–' // en dash