Al usar PHP Simple HTML DOM Parser, ¿es normal que los saltos de línea
se eliminen?Conservar saltos de línea - Simple HTML DOM Parser
Respuesta
Tuve problemas con esto también, ya que necesitaba el HTML para ser fácilmente editable después del procesamiento.
Aparentemente hay un booleano en el script SimpleHTMLDOM
$stripRN
, establecido en true
en forma predeterminada. Tiras las etiquetas \r
, \n
o \r\n
en el HTML.
Establezca la var en false
(varias apariciones en el script ...) y su problema está resuelto.
Usted no tiene que cambiar todo $stripRN
a falso, el único que afecta a 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 consideran que cambiar la línea 988, ya que las funciones de varios bytes no son a menudo instalado en máquinas que no manejan idiomas no occidentales europeos. línea original en v1.5 rompe el guión de inmediato:
if (function_exists('mb_detect_encoding')) { $charset = mb_detect_encoding($this->root->plaintext . "ascii", $encoding_list = array("UTF-8", "CP1252")); } else $charset === false;
Sé que esto es viejo, pero yo estaba buscando esto también, y se dio cuenta que en realidad era una construcción en la opción de desactivar la eliminación de saltos de línea . No es necesario ir a editar la fuente.
La función PHP simple HTML DOM del Analizador load
es compatible con varios parámetros útiles:
load($str, $lowercase=true, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT)
Cuando se llama a la función load
, simplemente pasan false
como tercer parámetro.
$html = new simple_html_dom();
$html->load("<html><head></head><body>stuff</body></html>", true, false);
Si se utiliza 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)
Editar: 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)
Gracias .. Muy útil. ¿Soy solo yo o estos parámetros no están documentados porque durante mi vida no pude encontrar ninguna palabra oficial sobre cómo hacer esto hasta que tropecé con esto? – userabuser
Me alegro de poder ayudar. No encontré ninguna documentación sobre eso tampoco. De hecho, iba a modificar la biblioteca para agregar esta funcionalidad cuando tropecé con esto. – Hiteklife
@userabuser Completamente indocumentado; -/ –
Otra opción debe un deseo de preservar otros formatos como los párrafos & partidas es utilizar innertext
en lugar de plaintext
luego realice su propia limpieza de cuerdas con el resultado.
Me doy cuenta de que hay un impacto en el rendimiento, pero permite un control más granular.
-1 Eso es tan oftálico Yo sacrifiqué el karma solo para regañarte. –
Si pasaba por aquí preguntándose si puede hacer lo mismo en DomDocument entonces me complace decir que puede hacerlo. - pero es un poco sucio :(
que tenía un fragmento de código que quería ordenada, pero conservo la línea exacta rompe 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 sé, sin lugar a dudas, que mi entrada solo contenía \ n. Es posible que desee sus propias variaciones si \ r \ n o \ t necesita tenerse en cuenta, por ejemplo, slash.T o slash .RN, etc.
- 1. Simple HTML Dom Parser: cómo insertar elementos
- 2. .NET HTML DOM Parser?
- 3. ¿Conservar saltos de línea con htmlentities?
- 4. Conservar saltos de línea al pegar en textarea
- 5. Cómo extraer el título y la meta descripción usando PHP Simple HTML DOM Parser?
- 6. Asir las entradas ocultas como una cadena (usando PHP Simple HTML DOM Parser)
- 7. ¿Qué biblioteca html DOM parser para Java es la mejor?
- 8. Retardo para HTML simple Clase DOM
- 9. PHP HTML DOM analizador
- 10. saltos de línea con knitr
- 11. <tbody> error en PHP Analizador DOM HTML simple
- 12. Dom HTML simple - Error fatal al usar load_file
- 13. Jade - Control de saltos de línea en la salida HTML
- 14. HTML-parser en Node.js
- 15. html parser codeigniter library?
- 16. Cómo conservar un salto de línea
- 17. php simple html dom parse img atributos html5?
- 18. Analizar CSS como simple DOM
- 19. simple html dom: cómo obtener una etiqueta sin cierto atributo
- 20. Saltos de línea ASP - \ n?
- 21. ¿Cómo ignorar saltos de línea?
- 22. Regex eliminar saltos de línea
- 23. iCal4j y saltos de línea
- 24. ¿Cómo elimino todos los saltos de línea?
- 25. Free Java HTML and JS parser
- 26. ¿Cuál es la forma más simple de obtener sangría XML con saltos de línea de XmlDocument?
- 27. isearch través de saltos de línea
- 28. convierte saltos y saltos de párrafo en una nueva línea en java
- 29. file_put_contents, file_append y saltos de línea
- 30. ¿Cómo hacer Html.DisplayFor mostrar saltos de línea?
Utilice el analizador dom integrado, no el simple html dom. El analizador integrado es un orden de magnitud más rápido. http://whitlock.ath.cx/FastCrawl/benchmark.php –
Disculpe, @ByronWhitlock, pero no uso Simple HTML DOM Parser para velocidad, lo uso para hacer toneladas de cosas que simplemente no puedo hacer con DOMDocument, ¡y es mucho más fácil! Pero, OH <¡lo que haría por una versión de Extensión PHP de Simple HTML DOM Parser! –