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);
?>
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>
Un saludo.