При использовании PHP Simple HTML DOM Parser, нормально ли, что разрывы строк
теги удалены?Сохранение разрывов строк - Простой HTML DOM Parser
ответ
Борясь с этим, так как мне нужно, чтобы HTML был легко редактируемым после обработки.
По-видимому, существует логическое значение в сценарии SimpleHTMLDOM
$stripRN
, которое установлено на true
по умолчанию. Он разбивает теги \r
, \n
или \r\n
в HTML.
Установите var в false
(несколько вступлений в скрипт ..), и ваша проблема решена.
Вам не придется менять все $stripRN
к ложным, только один, который влияет на такое поведение в строке 816 ``:
// load html from string
function load($str, $lowercase=true, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT) {
Также рассмотреть, чтобы изменить линии 988, поскольку функции многобайтовое часто не установленных на машинах, которые не имеют отношения к не-западно-европейским языкам. Оригинальная линия v1.5 ломает сценарий сразу:
if (function_exists('mb_detect_encoding')) { $charset = mb_detect_encoding($this->root->plaintext . "ascii", $encoding_list = array("UTF-8", "CP1252")); } else $charset === false;
Я знаю, что это старый, но я искал для этого, как хорошо, и понял, что на самом деле встроенный вариант, чтобы выключить удаление разрывов строк , Не нужно переходить к редактированию источника.
load
Функция PHP Simple HTML DOM Parser поддерживает несколько полезных параметров:
load($str, $lowercase=true, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT)
При вызове функции load
, просто передать false
в качестве третьего параметра.
$html = new simple_html_dom();
$html->load("<html><head></head><body>stuff</body></html>", true, false);
При использовании file_get_html
это девятый параметр.
file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT)
Edit: Для str_get_html
, это пятый параметр (спасибо yitwail)
str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
Спасибо .. Очень полезно. Это только я или эти параметры недокументированы, потому что для жизни я не мог найти никакого официального слова о том, как это сделать, пока я не наткнулся на это? – userabuser
Рад, что я мог помочь. Я тоже не нашел на нем никакой документации. Я на самом деле собирался модифицировать библиотеку, чтобы добавить эту функциональность сам, когда я наткнулся на это. – Hiteklife
@userabuser Полностью недокументирован;// –
Другой вариант следует пожелать, чтобы сохранить другого форматирования, такие как пункты & заголовки, чтобы использовать innertext
, а не plaintext
затем выполните свою собственную очистку строки с результатом.
Я понимаю, что есть хиты производительности, но это позволяет более гранулировать управление.
-1 Это настолько оскорбительно, что я приносил в жертву карму, чтобы просто ругать вас. –
Если вы проходили мимо здесь, задаваясь вопросом, можете ли вы сделать то же самое в DomDocument, тогда я могу сказать, что вы можете! - но это немного грязный :(
У меня был фрагмент кода, который я хотел аккуратно, но сохранить точные разрывы строк в нем содержится (\ п) Это то, что я сделал ....
// NOTE: If you're HTML isn't a full HTML document then expect DomDocument to
// start creating its own DOCTYPE, head and body tags.
// Convert \n into a pretend tag
$myContent = preg_replace("/[\n]/","<img src=\"slashN\" />",$myContent);
// Do your DOM stuff...
$dom = new DOMDocument;
$dom->loadHTML($myContent);
$dom->formatOutput = true;
$myContent = $dom->saveHTML();
// Remove the \n's that DOMDocument put in itself
$myContent = preg_replace("/[\n]/","",$myContent);
// Put my own \n's back
$myContent = preg_replace("/<img src=\"slashN\" \/>/i","\n",$myContent);
.
Важно отметить, что без тени сомнения, что мой вход содержит только \ n. Вам могут потребоваться ваши собственные варианты, если нужно учитывать учетные записи \ r \ n или \ t. Например, slash.T или слэш ,RN и т. Д.
- 1. PHP Простой HTML DOM Parser
- 2. Альтернатива простой HTML DOM Parser?
- 3. Простой HTML DOM Parser PHP
- 4. простой html dom parser $ html пуст
- 5. Используйте простой HTML DOM Parser для JSON?
- 6. Отказоустойчивый для PHP Простой HTML DOM Parser
- 7. PHP Простой HTML DOM Parser display none
- 8. PHP Простой HTML DOM Parser Memory Leak
- 9. PHP Простой HTML DOM Parser не работает
- 10. scrapping using PHP Простой HTML DOM Parser
- 11. Javascript HTML-экранирование, но сохранение разрывов строк
- 12. PHP простой HTML DOM Parser: извлечение всего дерева DOM
- 13. PHP HTML DOM Parser
- 14. .NET HTML DOM Parser?
- 15. File_get_html возвращает пустой html в PHP Простой HTML DOM Parser
- 16. Сохранение разрывов строк в textarea
- 17. Сохранение XDocument без разрывов строк
- 18. Простая ошибка HTML DOM Parser
- 19. Простой HTML Parser
- 20. PHP простой HTML DOM Parser: я хочу добавить ссылку на javascript для html dom с php simple dom parser
- 21. Сохранение разрывов строк в узле xml
- 22. PHP Простой HTML DOM Parser неправильно получить текст
- 23. Seting User Agent param в PHP Простой HTML DOM Parser
- 24. Попытка получить свойство не объекта Простой HTML DOM Parser
- 25. Получить конкретный URL-адрес с PHP Простой HTML DOM Parser
- 26. Найти div с классом, используя PHP Простой HTML DOM Parser
- 27. PHP простой html dom parser div id с переменной
- 28. Как использовать Xpath в PHP Простой HTML DOM Parser
- 29. Простой HTML DOM Parser: как читать значение выбранного параметра
- 30. простой html dom parser получить текст без тега
Используйте встроенный анализатор dom, а не простой html dom. Встроенный парсер на порядок быстрее. http://whitlock.ath.cx/FastCrawl/benchmark.php –
Извините, @ByronWhitlock, но я не использую Simple HTML DOM Parser для скорости, я использую его, чтобы делать тонны вещей, которые я просто не могу сделать с DOMDocument, и это намного проще! Но, OH <, что я сделал бы для PHP Extension версии Simple HTML DOM Parser! –