Intereting Posts
Установите SQLite в качестве базы данных для модульного тестирования в Laravel 5.1 Как создать скриншот веб-страницы с использованием сценария на стороне сервера? Symfony2 fos логин, зарегистрируйтесь и забыли пароль в одном представлении Какова таблица лидеров лучшей практики с php, mysql, memcached? Как точно использовать onDelete = "SET NULL" – Doctrine2 Получите пользователей новейших видео с YouTube? выполнение связанных с датой времени операций в PHP TCPDF – добавление фона в ячейку таблицы или div, которая отображается в PDF-файле Пустота как возвращаемый тип Рекурсивная функция: вызов самой функции php Как я могу использовать .htaccess, чтобы скрыть расширения URL-адресов ?php? Получение определенных значений из SoapClient Return в PHP GET данные из php, проверка в функции javascript и эхо автоматически при выборе значения DropDown Создание уникального ключа Интерфейс с абстрактными методами

Сохранение разрывов строк – простой HTML DOM Parser

При использовании PHP Simple HTML DOM Parser, нормально ли линия прерывается
теги удаляются?

    Я знаю, что это старо, но я тоже искал это, и понял, что на самом деле есть встроенная опция, чтобы отключить удаление разрывов строк. Не нужно переходить к редактированию источника.

    Функция 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) 

    Изменить: для 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) 

    Также боролся с этим, так как мне нужно, чтобы HTML был легко доступен для редактирования после обработки.

    По-видимому, в сценарии SimpleHTMLDOM $stripRN есть логическое $stripRN , которое установлено по умолчанию по умолчанию. Он разбивает теги \r , \n или \r\n в HTML.

    Установите var в false (несколько вступлений в скрипт ..), и ваша проблема решена.

    Вам не нужно менять все $stripRN на false, единственное, что влияет на это поведение, – на строку 816 “:

     // load html from string function load($str, $lowercase=true, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT) { 

    Также рассмотрите возможность изменения строки 988, поскольку многобайтовые функции часто не устанавливаются на машинах, которые не имеют отношения к не-западно-европейским языкам. Исходная строка в версии 1.5 немедленно прерывает скрипт:

     if (function_exists('mb_detect_encoding')) { $charset = mb_detect_encoding($this->root->plaintext . "ascii", $encoding_list = array( "UTF-8", "CP1252" ) ); } else $charset === false; 

    Если вы проходили мимо здесь, задаваясь вопросом, можете ли вы сделать то же самое в DomDocument, тогда я, пожалуйста, скажу, что вы можете! – но это немного грязно 🙁

    У меня был фрагмент кода, который я хотел бы привести в порядок, но сохранил точные разрывы строк, которые он содержал (\ n). Это то, что я сделал …

     // 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 или slash.RN и т. д.

    Другим вариантом является желание сохранить другое форматирование, такое как абзацы и заголовки, это использовать innertext plaintext а не innertext plaintext затем выполнить свою собственную очистку строки с результатом.

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