Найден неверный символ JSON - PullRequest
0 голосов
/ 10 октября 2018

У меня есть запрос MySQL для получения некоторых записей из БД.Затем внутри цикла у меня есть массив PHP, и в конце концов у меня есть json_encode() функция PHP.Значения, которые я получаю из БД, содержат некоторые теги HTML, поэтому json_encode() не работает.

Пожалуйста, посмотрите пример кода:

$pr_arr['products'][] = array(
                "id"                => $results_products->id,
                "business_id"       => $results_products->business_id,
                "pid"               => $results_products->pid,
                "category"          => $results_products->category,
                "style_mapping"     => $results_products->style_mapping,
                "name"              => $product_name,
                "price"             => $price,
                "offer_price"       => $offer_price,
                "product_link"      => $product_link,
                "image_url"         => $product_image,
                "size"              => $results_products->size,
                "manufacturer"      => $product_manufacturer,
                "description"       => $product_description,
                "color"             => $results_products->color,
                "sku"               =>  $results_products->sku,
                "mpn"               => $results_products->mpn,
                "instock"           => $results_products->instock,
                "availability"      => $results_products->availability,
                "date_added"        => $results_products->date_added
            );

The $product_description это тот, который имеет проблему.Если я прокомментирую эту строку кода, JSON будет действительным и правильным!

Валидация, которую я вижу из https://jsonlint.com/ (и если я смотрю ее в браузере, это):

"manufacturer":"combos","description":"
\\\\n\tv-\u03bb\u03b1\u03b9\u03bc\u03cc\u03ba\u03bf\u03c8\u03b7<\/li>
\\\\n\t\u03c0\u03b1\u03c4\u03b9\u03bb\u03ad\u03c4\u03b1 \u03bc\u03b5 \u03ba\u03bf\u03c5\u03bc\u03c0\u03b9\u03ac<\/li>
\\\\n\t\u03bc\u03b1\u03bd\u03c3\u03ad\u03c4\u03b5\u03c2 \u03ba\u03b1\u03b9 \u03c3\u03c4\u03c1\u03af\u03c6\u03c9\u03bc\u03b1 \u03c3\u03b5 rib \u03c0\u03bb\u03ad\u03be\u03b7<\/li>
regular fit<\/li>

Я читал, что когда вы открываете двойные кавычки, мне нужно, чтобы все было в одной строке.Но ничего, я уже пробовал, работал.Я пытался заменить новые строки пустыми пробелами, экранировать специальные символы (\ n, \ r, \ t и т. Д.)

Может кто-нибудь сказать мне, как решить эту проблему, чтобы я мог помочь в описании(с тегами HTML), внутри моего JSON?

заранее спасибо!

1 Ответ

0 голосов
/ 10 октября 2018

попробуйте добавить флаги в команду json_encode json_encode($yourArrayVar, JSON_HEX_QUOT | JSON_HEX_TAG); или json_encode($yourArrayVar, JSON_HEX_APOS | JSON_HEX_TAG); Также попробуйте смешать их с флагом Анис Хикмат Абу-Хмиад

...