Estoy probando con la misma tabla que te dije al principio.
Y estoy utilizando el siguiente script:
editarseleccionado_comillas.php
Código PHP:
<?
$link = mysql_connect('localhost','pepe','pepe');
mysql_select_db('dbangel',$link) or die('No pudo seleccionarse la BD.');
if ($_POST)
{
$descripcion=$_POST["descripcion"];
$id=$_POST["id"];
//-bbcode
$descripcion=bbcode($descripcion);
echo '<br>Descripción después del bbcode: '.$descripcion;
//-lo inserto
$ssql="UPDATE mitabla SET descripcion = '".$descripcion."'
WHERE id=".$id." ";
echo '<br>El update es: '.$ssql;
mysql_query($ssql,$link) or die('Error en UPDATE mitabla'.mysql_error());
}
echo '<br>Listado<br>';
$result = mysql_query("SELECT * FROM mitabla ",$link);
while($row = mysql_fetch_array($result)) {
// Código para cada fila
echo "<br> <a href=editarseleccionado_comillas.php?id=$row[id]>Edito</a> $row[id] $row[descripcion]";
}
mysql_free_result($result);
if ($_GET)
{
//-voy a editar uno de los que tienen comilla y presentarlo en el formulario
$id=$_GET[id];
$result = mysql_query("SELECT * FROM mitabla WHERE id=$id ",$link);
$row = mysql_fetch_array($result);
$descripcion=$row["descripcion"];
mysql_close($link);
?>
<hr>
<form name=f1 action="editarseleccionado_comillas.php" method="post" />
<br>Descripcion: <input type="text" name="descripcion" size="50" value="<?echo $descripcion?>" />
<input type="hidden" name="id" value="<?echo $id?>" />
<br><input type="submit" value=" Enviar " style="margin-top: 5ex;" />
</form>
<?
}
function bbcode($texto) {
$texto = nl2br(htmlentities($texto));
$texto= stripslashes($texto);
$texto = str_replace("[code]", "<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\"><tr><td><div align=\"left\" style=\"padding:5px;margin:5px;\"><div style=\" background-color:#FFFFFF;border-color:#808080;border-style:solid;border-width:1px;font-size:11px;margin:0px;overflow:auto;padding:6px;text-align:left;width:330px;\">[code]", $texto);
$texto = str_replace("[/code]", "[/code]<br /></div></div></td></tr></table>", $texto);
$texto = str_replace('"','"',$texto);
$simple_search = array('/\[\|x\|\]/is','/\[\=p\]/is','/\[\;\)\]/is','/\[\:o\]/is','/\[\:\)\]/is','/\[\:s\]/is','/\[<8\]/is','/\[d\=\]/is','/\[\:Q\]/is','/\[\:D\]/is','/\[\:\(\]/is','/\[8\)\]/is','/\[\:_o\]/is','/\[\:\|\]/is','/\[quote\](.*?)\[\/quote\]/is','/\[b\](.*?)\[\/b\]/is','/\[i\](.*?)\[\/i\]/is','/\[u\](.*?)\[\/u\]/is','/\[a href\=(.*?)\](.*?)\[\/a\]/is','/\[img src\=(.*?)\]/','#\[code\](.*?)\[\/code\]#se');
$simple_replace = array('<img src="bbcode/emoticons/e14.gif">','<img src="bbcode/emoticons/e12.gif">','<img src="bbcode/emoticons/e10.gif">','<img src="bbcode/emoticons/e8.gif">','<img src="bbcode/emoticons/e6.gif">','<img src="bbcode/emoticons/e2.gif">','<img src="bbcode/emoticons/e13.gif">','<img src="bbcode/emoticons/e11.gif">','<img src="bbcode/emoticons/e9.gif">','<img src="bbcode/emoticons/e7.gif">','<img src="bbcode/emoticons/e5.gif">','<img src="bbcode/emoticons/e1.gif">','<img src="bbcode/emoticons/e3.gif">','<img src="bbcode/emoticons/e4.gif">',"<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\"><tr><td><div align=\"left\" style=\"padding:5px;margin:5px;\"><div style=\" background-color:#EEEFDC;border-color:#808080;border-style:solid;border-width:1px;font-size:11px;margin:0px;overflow:auto;padding:6px;text-align:left;width:330px;\">$1<br /></div></div></td></tr></table>",'<strong>$1</strong>','<em>$1</em>','<u>$1</u>','<a target=\"_blank\" href=$1>$2</a>','<img src=$1 alt=$1 />',"highlight_string(stripslashes(html_entity_decode(str_replace('<br />','','$1'))), true)");
$texto = preg_replace ($simple_search, $simple_replace, $texto);
return $texto;
}
?>
Este código lo he ejecutado asteriscando la parte de bbcode y funciona corretamente. Pero, si se ejecuta tal cual está, sólo funciona cuando el nº de comillas simples que contiene es par,
por el contrario te destroza el update.
Yo creo que puede tener solución pero hay que verlo. Un saludo.
EDITO:
-----------------
Perdona pero estaba dando errores porque había comenzado a hacer modificaciones. Creo que este es el script correcto.
-----------------