PHP htmlentities () без преобразования тегов html

Я нашел несколько сообщений, которые относятся к проблеме, но ни одно из них не решает ее полностью.

Мне нужна функция, которая будет выводить содержимое, преобразуя все специальные символы так же, как и htmlentities (), но с сохранением всех тегов html.

Я пробовал много разных подходов, но, как я уже упоминал выше, ни один из них работает, как ожидалось.

Мне было интересно, можно ли сделать это с помощью PHP-класса DomDocument.

Я попытался сделать это, используя следующее:

$objDom = new DOMDocument('1.0', 'utf-8');
$objDom->loadhtml($content);
return $objDom->savehtml();

который работает, но он также добавляет все структура страницы, т.е.

<head><body> etc.

Мне нужно только преобразовать содержимое переменной $ content и выполнить задание.

Еще одна вещь, о которой стоит упомянуть, это то, что в $ content также могут быть преобразованы некоторые символы в жалобу xhtml - поскольку она происходит из Wysiwyg. Таким образом, он может содержать & и т. Д., Которые также должны быть сохранены.

Кто-нибудь знает, как это сделать с помощью DomDocument - возможно, мне следует использовать другой метод сохранения?

Хорошо, я придумал следующее - не отлично, но отлично справляется с работой:

$objDom = new DOMDocument('1.0', 'UTF-8');
$objDom->loadHTML($string);
$output = $objDom->saveXML($objDom->documentElement);
$output = str_replace('<html><body>', '', $output);
$output = str_replace('</body></html>', '', $output);
$output = str_replace('&#13;', '', $output);
return $output; 

Мы будем очень признательны за любые лучшие идеи.

5
задан user398341 13 June 2011 в 15:00
поделиться