Clase PHP para obtener la “Frase del dia” de wikiquote.org mediante su API

closeHola! hace 4 years 4 months 4 days que escribí esta entrada, puede que esta información ya no sea valida en la actualidad, por favor se comprensivo conmigo cuando comentes 🙂

Les comparto una clase de PHP que tengo desde hace mucho tiempo que tiene como funcionalidad obtener la “Frase del dia” de wikiquote.org usando el API que ellos proveen.

La clase:

 
/**
 * Clase que usa el api de http://es.wikiquote.org para obtener la frase de ma semana
 * */
class Frases
{
static private $instancia = NULL;
 
	private function __construct(){}    
 
    static public function getInstancia() 
    {
       if (self::$instancia == NULL) {
          self::$instancia = new Frases ();
       }
       return self::$instancia;
    }
 
	function semana($semana = '')
	{		
		if($semana == '')
			$semana 		= date("D");
 
		$semanaArray 	= array( "Mon" => "lunes", "Tue" => "martes", "Wed" => "miércoles", "Thu" => "jueves", "Fri" => "viernes", "Sat" => "sábado", "Sun" => "domingo", ); 
		$title		= "Plantilla:Frase-".$semanaArray[$semana];
		$title		= "{"."{".$title."}"."}";		
		$sock 		= $this->get("http://es.wikiquote.org/w/api.php?action=parse&format=php&text=$title");
		$array__ 	= unserialize(($sock));
		$texto_final	= $array__["parse"]["text"]["*"];
		$texto_final	= utf8_decode( $texto_final);                       
		$texto_final 	= strip_tags($texto_final);
		$data = explode("n",$texto_final);
		foreach($data as $key => $val)
		{
			if(trim($val) != '')
				$frase[]=$val;
		}
		return $frase;
	}
 
	function get($URL)
	{
		$userAgent 	= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';	
		$ch 		= curl_init(); //Set curl to return the data instead of printing it to the browse
		curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); 
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set the URL 
		curl_setopt($ch, CURLOPT_URL, $URL); //Execute the fetch 
		$data 		= curl_exec($ch); //Close the connection curl_close($ch);
		return $data;
	}
}

Ejemplo de uso:

$Frases = Frases::getInstancia();
echo '<pre>';
print_r($Frases->semana());

Salida

Array
(
[0] => A las guerras de religión siguieron, luego de una brevísima tregua, las guerras de los nacionalismos; y en nuestro mundo occidental moderno, el espíritu de los fanatismos religioso y nacional [constituye] evidentemente una sola y misma pasión [maligna]
[1] => Arnold Joseph Toynbee
[2] => Historiador británico (n. Londres; 4 de abril de 1889 ? m. York; 22 de octubre de 1975).
)

Como podemos observar la clase retorna un array, compuesto por:
0 => La frase del dia
1 => La persona que la dijo
2 => Informacion de quien dijo la frase

Espero que les sea de mucha utilidad.

You may also like...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *