Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/03/2021, 15:24
Anarko
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: REGEX "todo lo que NO esté seguido por MISTRING"

Cita:
Iniciado por tuadmin Ver Mensaje
...
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);
...
gracias por la ayuda tuadmin siguiendo tu consejo, acondiciono el wysiwyg que he creado utilizando document.execCommand para que séa XHTML válido, pues con JS he removido la parte W3C que se agrega al interactuar con el wysiwyg:
Código:
document.getElementById('elhtml').value = Q.replace(/ xmlns="http:\/\/www.w3.org\/1999\/xhtml" /g, ' ');
y ahora con PHP lo preparo para ser XHTML:
Código PHP:
if(!empty($_POST['elhtml'])){
    
$elhtml $_POST['elhtml'];
    echo 
'HTML original:<textarea style="width:100%;height:8%;font-size:1.2em;">'.$elhtml.'</textarea>';

// divido el HTML recibido en líneas:
    
$elhtml preg_replace('/<font .*?>/'"\n$0"$_POST['elhtml']);
    echo 
'HTML con saltos de línea:<textarea style="width:100%;height:13%;font-size:1.2em;">'.$elhtml.'</textarea>';

    while(
preg_match('@(<br />\s*|</font>\s*)$@s'$elhtml)){echo 1;
        
$elhtml preg_replace('@(<br />\s*|</font>\s*)$@s'''$elhtml);
        }
    echo 
'HTML sin tags al final:<textarea style="width:100%;height:33%;font-size:1em;">'.print_r($elhtml1).'</textarea>';
    echo 
'HTML procesado:<textarea style="width:100%;height:100%;font-size:1em;">';

    
$elhtml explode("\n"$elhtml);
    
$HTML '';
    foreach(
$elhtml AS $n => $L){
        if(
$n && !preg_match('@(</font>)$@'$L))$L $L.'</font>';
        
$HTML .= $L."\n";
        }
    echo 
$HTML;
    } 
no sé por qué no se créa un XHTML válido de manera nativa, sin embargo con tu explode espero poderlo manejar.

Gracias