Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/09/2008, 11:35
Avatar de IMAC/
IMAC/
 
Fecha de Ingreso: octubre-2005
Mensajes: 738
Antigüedad: 19 años
Puntos: 14
De acuerdo Sustituir caracter de una cadena por código html, no otra cadena "<td>"...

Buenas

Estoy intentando hacer un función que me haga de BBCode y quiero implementar la funcionalidad de crear una tabla.

Para ello he pensado que se podría hacer así:
[tabla]
[fila]Columna1Fila1 | Columna2Fila1 | Columna3Fila1[/fila]
[fila]Columna1Fila2 | Columna2Fila2 | Columna3Fila2[/fila]
[/tabla]

Todo lo que son [fila] [/fila] y patrones con 2 textos donde el valor del médio se mentiene intacto, no tengo problemas, uso la función preg_replace con 2 arrays.

El problema es que el símbolo | que separa una columna de otra debería de ser sustituido por <td></td> para el código que he programado.
La cuestión es que no se hacerlo mediante los arrays de preg_replace y pensé en usar str_replace(" | ", '</td><td>', $body);

Es aquí donde me viene el problema, la cadena " | " efectivametne se sustituye por "<td></td>, pero no en el código fuente, sino en modo de cadena, de modo que en el código fuente los <td></td> se ven así: "&lt;/td&gt;&lt;td&gt;6%"

¿alguna idea?

PD: uso este código, por si os vale para aclarar mi explicación anterior, el fallo está en mi primera linea:
Código PHP:
  $body str_replace(" | "'</td><td>'$body);

 
$body htmlentities($body);
   
   
   
$a = array(
      
"/\[i\](.*?)\[\/i\]/is",
      
"/\[b\](.*?)\[\/b\]/is",
      
"/\[u\](.*?)\[\/u\]/is",
      
"/\[t\](.*?)\[\/t\]/is",
      
"/\[d\](.*?)\[\/d\]/is",
      
"/\[url=(.*?)\](.*?)\[\/url\]/is",
      
"/\[v\](.*?)\[\/v\]/is",
      
"/\[tabla\](.*?)\[\/tabla\]/is",
      
"/\[fila\](.*?)\[\/fila\]/is",
      
"/\[fila2\](.*?)\[\/fila2\]/is",
      
"/\ | /is"
   
);
   
$b = array(
      
"<i>$1</i>",
      
"<b>$1</b>",
      
"<u>$1</u>",
      
"<b>$1</b><DIV STYLE=\"background-position:bottom; background-image: URL(imgs/linea.gif); background-repeat:repeat-x; height:7\"></div>",
      
"<blockquote><p>$1</p></blockquote>",
      
"<a href=\"$1\" target=\"_blank\">$2</a>",
      
"<a href=\"http://www.youtube.com/watch?v=$1\" target=\"_blank\"><img src='http://img.youtube.com/vi/$1/2.jpg'></a>",
      
"<table width=\"66%\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" class=\"bordeTabla informacion\">$1</table>",
      
"<tr bgcolor=\"#eeeee1\"><td>$1</td></tr>",
      
"<tr bgcolor=\"#ffffff\"><td>$1</td></tr>",
      
"<td></td>",
   );
   
$body preg_replace($a$b$body);
   
$body nl2br($body); 
Gracias.

Última edición por IMAC/; 19/09/2008 a las 11:42