Buenos días,
Estoy empollándome esto de las clases en PHP y por lo visto se me ha escapado algo. Tengo dos clases, una con una función que me genera una cadena de texto y otra clase con una función que busca una cadena de texto en un texto más grande y la sustituye por la cadena generada por la primera clase.
El problema está en que todo funciona correctamente salvo porque las variables por las que está formada la primera cadena no aparecen. Se quedan en blanco.
El archivo es el siguiente:
Código PHP:
<?php
class Flickr {
private $apiKey = 'c933e0d66a6695d005d660392bc496f2';
public function img($id)
{
$url = 'http://www.flickr.com/services/rest/?api_key=' . $this->apiKey . '&format=php_serial&method=flickr.photos.getInfo&photo_id=' . $id;
$resultado = file_get_contents($url);
$resultado = unserialize($resultado);
$foto = $resultado[photo];
$foto_url = 'http://farm' . $foto[farm] . '.static.flickr.com/' . $foto[server] . '/' . $foto[id] . '_' . $foto[secret] . $tam . '.jpg';
$foto = '<a href="' . $foto[urls][url][0][_content] . '"><img src="' . $foto_url . '" alt="' . $foto[title][_content] . '" /></a>';
return $foto;
}
}
$flickr = new Flickr();
class BBcode {
function __construct(&$flickr)
{
$this->flickr =& $flickr;
}
function procesar($texto){
$a = "/\[img\](.*?)\[\/img\]/is";
$b = "$1";
$b = $this->flickr->img($b);
$texto = preg_replace($a, $b, $texto);
return $texto;
}
}
$texto = 'Imagen 1:<br />';
$texto .= '[img]4398563145[/img]<br />';
$texto .= 'Imagen 2:<br />';
$texto .= '[img]4334520973[/img]';
echo '<br /><br />';
$bbcode = new BBcode($flickr);
echo $bbcode->procesar($texto);
?>
Y esto me devuelve lo siguiente:
Código HTML:
Imagen 1:<br /><a href=""><img src="http://farm.static.flickr.com//_.jpg" alt="" /></a><br />Imagen 2:<br /><a href=""><img src="http://farm.static.flickr.com//_.jpg" alt="" /></a>
A ver si alguien sabe qué es lo que he hecho mal y puede echarme un cable.
Un saludo.