salto renglon que pasar parrafo linea etiquetas como php html regex

renglon - Cómo convertir múltiples etiquetas<br/> a una sola etiqueta<br/> en php



pasar parrafo html (9)

La legibilidad mejorada, más corta, produce resultados correctos independientemente de los atributos:

preg_replace(''{(<br[^>]*>/s*)+}'', ''<br/>'', $input);

Quería convertir

<br/> <br/> <br/> <br/> <br/>

dentro

<br/>


Probablemente quiera usar una expresión regular. No he probado lo siguiente, pero creo que es correcto.

$text = preg_replace( "/(<br/s?//?>)+/i","<br />", $text );


Puedes hacer esto con una expresión regular:

preg_replace("/(<br/s*//?>/s*)+/", "<br/>", $input);

Si pasa el código fuente HTML, esto devolverá una cadena con un único <br/> reemplazando cada ejecución de ellos.


Usa una expresión regular para <br/> una o más veces, luego usa preg_replace (o similar) para reemplazarlo con <br/> , como la respuesta de levik.


sin preg_replace, pero funciona solo en PHP 5.0.0+

$a = ''<br /><br /><br /><br /><br />''; while(($a = str_ireplace(''<br /><br />'', ''<br />'', $a, $count)) && $count > 0) {} // $a becomes ''<br />''


Gracias a todos .. Usado Jakemcgraw''s (+1) versión

Acaba de agregar la opción insensible a mayúsculas / minúsculas ..

{(<br[^>]*>/s*)+}i

Una gran herramienta para probar esas expresiones regulares es:

http://www.spaweditor.com/scripts/regex/index.php


Un enfoque rápido y no de expresión regular:

while(strstr($input, "<br/><br/>")) { $input = str_replace("<br/><br/>", "<br/>", $input); }


El usuario puede ingresar muchas variantes

<br> <br/> < br /> <br > <BR> <BR>< br>

...y más.

Así que creo que será mejor después

$str = preg_replace(''/(<[^>]*?br[^>]*?>/s*){2,}/i'', ''<br>'', $str);


El mío es casi exactamente el mismo que el de Levik (+1), solo explica algunos formatos diferentes de br:

preg_replace(''/(<br[^>]*>/s*){2,}/'', ''<br/>'', $sInput);