php - guia - Preservar saltos de línea-Analizador HTML simple DOM
qgis manual (5)
Al usar PHP Simple HTML DOM Parser, es normal que los saltos de línea
las etiquetas son eliminadas?
No tiene que cambiar todos los $stripRN
a falso, el único que afecta este comportamiento es en la línea 816 ``:
// load html from string
function load($str, $lowercase=true, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT) {
También considere cambiar la línea 988, ya que las funciones multibyte a menudo no están instaladas en máquinas que no se ocupan de idiomas europeos que no son de wester. La línea original en v1.5 rompe el script inmediatamente:
if (function_exists(''mb_detect_encoding'')) { $charset = mb_detect_encoding($this->root->plaintext . "ascii", $encoding_list = array( "UTF-8", "CP1252" ) ); } else $charset === false;
Otra opción si se desea conservar otro formato, como párrafos y encabezados, es utilizar plaintext
innertext
lugar de plaintext
innertext
y luego realizar su propia limpieza de cadenas con el resultado.
Me doy cuenta de que hay un impacto en el rendimiento, pero permite un control más granular.
Sé que esto es antiguo, pero también estaba buscando esto, y me di cuenta de que en realidad había una opción incorporada para desactivar la eliminación de saltos de línea. No hay necesidad de ir editando la fuente.
La función de load
PHP Simple HTML Dom Parser admite múltiples parámetros útiles:
load($str, $lowercase=true, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT)
Al llamar a la función de load
, simplemente pase false
como tercer parámetro.
$html = new simple_html_dom();
$html->load("<html><head></head><body>stuff</body></html>", true, false);
Si usa file_get_html
, es el noveno parámetro.
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)
Edición: Para str_get_html
, es el quinto parámetro (Gracias yitwail)
str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
Si pasaba por aquí preguntándose si puede hacer lo mismo en DomDocument, ¡por favor, diga que puede! - pero está un poco sucio :(
Tenía un fragmento de código que quería ordenar pero que conservaba los saltos de línea exactos que contenía (/ n). Esto es lo que hice....
// 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);
Es importante tener en cuenta que lo sé, sin la menor duda de que mi entrada solo contenía / n. Es posible que desee sus propias variaciones si / r / n o / t debe tenerse en cuenta. por ejemplo, slash.T o slash.RN etc.
También tuve problemas con esto, ya que necesitaba el HTML para poder editarlo fácilmente después del procesamiento.
Aparentemente, hay un valor booleano en el script SimpleHTMLDOM
$stripRN
, que se establece en true
en forma predeterminada. Elimina las etiquetas /r
, /n
o /r/n
en el HTML.
Establezca la var en false
(varias apariciones en el script ...) y se solucionará su problema.