Модераторы: Aliance, IZ@TOP, SamDark, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DOMDocument вставляет переносы, как избавиться от переводов строки 
:(
    Опции темы
Gwendolen
Дата 30.3.2013, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 5.4.2005

Репутация: нет
Всего: 1



Мне надо отредактировать фрагмент 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>/n
<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);


хотя может буду и таким: 
Код
$tout = substr($filtred_text, 6, -7);

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

Это сообщение отредактировал(а) Gwendolen - 30.3.2013, 14:09
--------------------
Наносите пользу и причиняйте добро!
PM MAIL   Вверх
Google
  Дата 23.9.2017, 08:30 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0988 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.