PHP Load HTML Преобразование кавычек (") в специальные символы - PullRequest
0 голосов
/ 18 октября 2019

У меня есть вход, где пользователи могут ввести свой HTML, который позже отображается как часть тела. Чтобы убедиться, что введенный пользователем HTML-файл правильно закрыт, я использую этот код:

$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($body);
$dom->removeChild($dom->doctype);
$body = $dom->saveHTML();

$body = str_replace('<html><body>', '', $body);
$body = str_replace('</body></html>', '', $body);
$body = trim(preg_replace('/\s\s+/', ' ', str_replace("\n", " ", $body)));

Теперь, если введенный пользователем контент содержит двойные кавычки («) или одинарные кавычки, это преобразует его в нечто вроде &acirc;&#128;&#156;, который отображается как “ в html. Как убедиться, что специальные символы, такие как кавычки, отображаются правильно?

РЕДАКТИРОВАТЬ: Вот образец текста, который вставляется:

It is called a “buddy list,” “friend list” or “contact list." Users are typically alerted when someone on their list is online.

, который преобразуетсяв:

It is called a “buddy list,†“friend list†or “contact list." Users are typically alerted when someone on their list is online.

1 Ответ

0 голосов
/ 18 октября 2019

Попробуйте

<?php
$str1 = htmlentities($str, ENT_QUOTES);

$str = html_entity_decode($str1);
?>
...