Hola amigos:
Estoy intentando hacer que cuando se pase una función bbcode, si el usuario pone [img1]foto.jpg[/img1] la imagen aparezca pero redimensionada, a escala, pero no termino de conseguirlo. Mi problema es que solo se hacer que [img1]foto.jpg[/img1] se reemplace por <img src="...">, pero no que escriba <img src="..." width="..." height="..."> con las medidas calculadas para que la imagen aparezca a escala.
Las funciones que tengo son: normalizar_grafico, que devuelve una array con la medidas a escala de la imagen, redimensionar,que devuelve una cadena con las medidas a escala de la imagen que le pases y cadena que es la que tiene que sustituir en el bbcode por [img1]foto.jpg[/img1], y finalmente la funcion bbcode.
Os pego las funciones, y a ver si podeis darme una solución, xq intentando $texto=preg_replace("(\[img1\](.+?)\[\/img1\])is",redimensionar($1),$texto); la funcion preg_replace da error.
Código PHP
<?
function normalizar_grafico($size_x,$size_y,$hueco_x,$hueco_y,$extender = true) {
if ($size_x > 0 && $size_y > 0) {
if ($size_x <= $hueco_x && $size_y <= $hueco_y && !$extender) {
$y = $size_y;
$x = $size_x;
}
else {
if ($hueco_x/$size_x < $hueco_y/$size_y) {
$x = $hueco_x;
$y = $size_y*($hueco_x/$size_x);
}
else {
$x = $size_x*($hueco_y/$size_y);
$y = $hueco_y;
}
}
$coord = array (round($x),round($y));
return $coord;
}
else return false;
}
function redimensionar($nombre) {
$dir = " ";
$file = $nombre;
$extensiones = array('jpg','jpeg','gif','png');
$max_width=100;
$max_height=100;
if ($file != '.' && $file != '..' && in_array(strtolower(substr(strrchr($file,'.'),1)),$extensiones)) {
$tamaño=getimagesize($dir.$file);
$tamaño=normalizar_grafico($tamaño[0],$tamaño[1],$max_width,$max_height,false);
return '<center><a href="?go=Gal&ac=ver&id='.$row["id"].'"><img src="'.$dir.$file.'" width="'.$tamaño[0].'" height="'.$tamaño[1].'" border="0" alt="Pulsa para verla más grande" /></a>';
}
}
function bbcode($texto) {
$texto=preg_replace("/(http:\/\/)([^ ]+)/is",'<a href="\1\2" target="_blank" style="color: #FFFFFF;">\2</a>',$texto);
$texto=preg_replace("(\[b\](.+?)\[\/b\])is",'<b>$1</b>',$texto);
$texto=preg_replace("(\[i\](.+?)\[\/i\])is",'<em>$1</em>',$texto);
$texto=preg_replace("(\[u\](.+?)\[\/u\])is",'<u>$1</u>',$texto);
$texto=preg_replace("(\[center\](.+?)\[\/center\])is",'<center>$1</center>',$texto);
$texto=preg_replace("(\[img1\](.+?)\[\/img1\])is",redimensionar($1),$texto);
$texto=nl2br($texto);
return($texto);
}
$texto = "[img1]hola.jpg[/img1] bla bla bla";
echo bbcode($texto);
?>
Gracias de antemano, un saludo.
kec0.