DOMDocument вставляет переносы

 
0
 
PHP
ava
Gwendolen | 30.03.2013, 14:56
Мне надо отредактировать фрагмент html через PHP DOM.
Проблема в том, что он вставляет переводы строк, которые браузер воспринимает как пробелы. Как избавиться от перевода строк, кроме как их вырезать после генерации документа?

$doc->formatOutput = FALSE; не помогает.


Вот код:

$text = '<div>bbb<p>sadsdsd</p>aaa</div><p><b>xxx</b></p><br><p></p><div>ccc</div>';
print($text);
print('__');
$doc = new DOMDocument();
$doc->loadHTML($text);
$body = $doc->documentElement->getElementsByTagName('body')->item(0);
$filtred_text = $doc->saveHTML($body);
print $filtred_text;
 

Ожидаю:
Цитата


<div>bbb<p>sadsdsd</p>aaa</div><p><b>xxx</b></p><br><p></p><div>ccc</div>__<body><div>bbb<p>sadsdsd</p>aaa</div><p><b>xxx</b></p><br><p></p><div>ccc</div></body>



Но получаю:
Цитата


<div>bbb<p>sadsdsd</p>aaa</div><p><b>xxx</b></p><br><p></p><div>ccc</div>__<body>

<div>bbb<p>sadsdsd</p>aaa</div>/n

<p><b>xxx</b></p>/n

<br><p></p>/n

<div>ccc</div>/n

</body>



Если достаю так:


$text = '<div>bbb<p>sadsdsd</p>aaa</div><p><b>xxx</b></p><br><p></p><div>ccc</div>';
print($text);
print('__');
$doc = new DOMDocument();
$doc->loadHTML($text);
$filtred_text = $doc->saveHTML();
print $filtred_text;
 

То получаю почти как надо, но много лишней гадости:
Цитата


<br><div>bbb<p>sadsdsd</p>aaa</div><p><b>xxx</b></p><br><p></p><div>ccc</div>__<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">/n

<html><body><div>bbb<p>sadsdsd</p>aaa</div><p><b>xxx</b></p><br><p></p><div>ccc</div></body></html>/n



P.S. В итоге мне надо получить всё то, что внутри body. Если есть какой другой выдрать его подскажите. После получения, я удаляю body таким образом

$tout =  preg_replace('@^<' . $tag . '[^>]*>|</' . $tag . '>$@', '', $filtred_text);

на этом этапе можно повырезать и все переносы строк, но хотелось бы более элегантное решение.
Kommentare (0)

Kommentare werden nicht hinzugefügt

Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden