Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/03/2021, 09:49
tuadmin
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años, 8 meses
Puntos: 120
Respuesta: REGEX "todo lo que NO esté seguido por MISTRING"

por lo visto quieres evitar anidaciones, yo pienso que primero deberias hacer un SPLIT a todo el string
algo como

Código PHP:
Ver original
  1. <?php
  2. $lineas = split("<font",$html);
  3. foreach($lineas as &$linea){
  4.    if(stripos($linea,'</font') >0)){ //todo correcto tiene cierre del TAG
  5.  
  6.    }else{//no tiene cierre del TAG y le agregamos uno por que la siguiente linea viene otro FONT
  7.       $lineas .= '</font>'
  8.    }
  9. }
  10. //y volvemos a armar de nuevo el string
  11. $html = implode("<font",$lineas);

bueno eso es un ejemplo stricto, ya que tambien puede surgir ciertos casos como '<Font' <FONT , etc u otras etiquetas, todo depende de tu imaginacion, un implode puede ser mas util que una expresion regular la expresion regular consume mas recursos que un strpos ,explode
tenlo en cuenta
puedes consultar

https://www.php.net/strpos
https://www.php.net/explode
y el favorito
https://www.php.net/manual/es/function.strip-tags.php
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9