PDA

Ver la Versión Completa : Tengo problemas con reg_split, para separar una cadena


David
17-02-2010, 16:41:40
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:

<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, -1, PREG_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?


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


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


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


// Saludos