Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Tengo problemas con reg_split, para separar una cadena (https://www.clubdelphi.com/foros/showthread.php?t=66386)

David 17-02-2010 16:41:40

Tengo problemas con reg_split, para separar una cadena
 
Hola

tengo una cadena separada cada parte por la etiqueta <br \>, quiero crear un array donde el elemento al que se le hace un split es la mencionada etiqueta.
Luego añado unas tablas antes y después para que el texto me salga como quiero, pero reg_split no me funciona bien con <br \>, pues no me sustrae esta etiqueta:

pongo el código:
Código PHP:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>
<?php
function setBoletin($cadena){

$antes '<table width="100%"  border="3" cellspacing="0" cellpadding="0"><tr><td width="24%" valign="top"><div align="center"><img src="images/foto1.jpg" width="127" height="99"></div></td>
<td width="76%" valign="top"><table width="91%"  border="0" cellspacing="0" cellpadding="0"><tr><td valign="top" class="miclase"><div align="left">'
;
$despues '</div></td></tr></table></td></tr><tr><td colspan="2"><div align="center"><img src="images/foto2.jpg" width="100%" height="7"></div></td></tr></table>';
if(
ereg('<br />',$cadena)){

    
//$rdo = preg_split("<br />",$cadena);
    //$rdo = preg_split('/<[^>]*[^\/]>/i', $cadena, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
    
$rdo preg_split('[<br \>]'$cadena, -1PREG_SPLIT_NO_EMPTY PREG_SPLIT_DELIM_CAPTURE);
    
    
$output '';
    for(
$i=0;$i<count($rdo);$i++){
        
//$output .= $antes . $rdo[$i] . $despues;    
        
$output .= $rdo[$i];
    }
    return 
$output;
    
}else{
    return 
$cadena;
}

$cadena '{hola}<br \>{¿Como estas?}<br \>{Yo bien}<br \>';

echo(
setBoletin($cadena));

?>
<body>
</body>
</html>

Cómo veis el resultado de la función es:
{hola}
{¿Cómo estas?}
{Yo bien}

el código fuente, sería {hola]<br \>, etc...
pero quiero que sea, {hola}{¿Cómo estas?}{Yo bien} , es decir sin la etiqueta <br \>

Esto sería el primer paso, luego si veis la línea comentada : $output .= $antes . $rdo[$i] . $despues; , hay tampoco sale la tabla, tal y como quiero y es el proposito. He intentado las opciones comentadas y alguna más pero no termina de salirme.

Saludos

roman 17-02-2010 17:53:02

¿No debería ser <br /> en lugar de <br \>?

Por otro lado, no entiendo. Si lo único que quieres es quitar la etiqueta <br /> ¿por qué no usas str_replace?

Código PHP:

echo str_replace('<br />'''$cadena); 

O, incluso, si quieres considerar variantes de la etiqueta: <br>, <br/>, <br />, puedes usar algo como:

Código PHP:

echo preg_replace('#<br */*>#'''$cadena); 

// Saludos


La franja horaria es GMT +2. Ahora son las 22:50:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi