2012-02-12 2 views
0

J'utilise l'API TinySong pour générer un lien, ça marche, maintenant j'ai essayé d'utiliser un linkify pour cela. Ce n'est pas le cas. Je ne suis pas sûr pourquoi ce n'est pas linking je crois que j'ai utilisé la bonne variable. Voici le code.Linkify PHP text

<?php 
    // linkify URLs 
    $pre = preg_replace(
    '/(https?:\/\/\S+)/', 
    '<a href="\1">\1</a>', 
    $pre 
); 
?> 
 <script src="http://platform.twitter.com/anywhere.js?id= MY API KEY&v=1" type="text/javascript"></script> 
<?php 



class Tinysong 
{ 
    protected $api_key = ''; 
    protected $method = ''; 
    protected $limit = ''; 
    protected $query_string = ''; 


    public static $CURL_OPTS = array(
     CURLOPT_CONNECTTIMEOUT => 10, 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_TIMEOUT  => 60, 
     CURLOPT_USERAGENT  => 'tinysong-php-0.7', 
    ); 


    public function __construct($api_key) 
    { 
     $this->api_key = $api_key; 

    } 




    /** 
    * A wrapper for RESTful method /a/ (single 
    * @return @Tinysong 
    */ 
    public function single_tinysong_link($query_string) 
    { 
     $this->query_string($query_string); 
     return $this->method('a'); 
    } 

     public function search($query_string) 
    { 
     $this->query_string($query_string); 
     return $this->method('a'); 
    } 

    /** 
    * A wrapper for RESTful method /s/ (search) 
    * @return Tinysong 
    */ 


    /** 
    * Sets the query string 
    * @return Tinysong 
    */ 
    public function query_string($query_string) 
    { 
     $this->query_string = urlencode($query_string); 
     return $this; 

} 

    /** 
    * 
    * @param type $method 
    * @return Tinysong 
    */ 
    public function method($method) 
    { 
     $this->method = $method; 
     return $this; 
    } 


    /** 
    * Fetchs the data based on the parameters 
    * @param bool $clean_params cleans the params after build the url 
    * @param resource $ch a custom php curl resource 
    * @return array an associative array with the data 
    */ 
    public function execute($clean_params = true, $ch = null) 
    { 

     $url = $this->build_query(); 

     if ($clean_params) 
     { 
      $this->clean_params(); 
     } 

     if (!$ch) 
     { 
      $ch = curl_init($url); 
      curl_setopt_array($ch, self::$CURL_OPTS); 
     } 


     $query_result = curl_exec($ch); 

     curl_close($ch); 


     return json_decode($query_result, true); 

    } 


    /** 
    * Builds an API query based on the parameters 
    * @return string the query 
    */ 
    public function build_query() 
    { 
     $url = "http://tinysong.com"; 
     $url .= '/'.$this->method.'/'; 
     $url .= $this->query_string.'?'; 

     if ($this->limit) 
     { 
      $url .= 'limit='.$this->limit; 
     } 


     $url .= '&key='.$this->api_key; 
     $url .= '&format=json'; 

     return $url; 
    } 


    /** 
    * Cleans the params (method, query string and limit) 
    * @return Tinysong 
    */ 
    public function clean_params() 
    { 
     $this->method  = ''; 
     $this->query_string = ''; 
     $this->limit  = ''; 
    } 




} 


?> 

Comment rendre le lien résultat cliquable? Suis-je même en utilisant le bon code ?? Merci

+0

Vous avez plus de chances d'obtenir une aide positive si vous isoler une zone de problème spécifique dans votre code au lieu de dumping, ce qui revient au script entier dans un bloc de code. Personnellement, je n'ai pas le désir ou l'envie de passer au crible votre code ligne par ligne à la recherche d'un problème potentiel. Faire un peu de pré-débogage pour comprendre ce qui ne fonctionne pas spécifiquement et poser des questions à ce sujet. – rdlowrey

Répondre

0

Cela fonctionne bien sur les sites que je me sers pour ...

function find_urls($t){ 
    $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; 
    // Check if there is a url in the text 
    if(preg_match($reg_exUrl, $t, $url)) { 
     $add=''; 
     if (substr($url[0],(strlen($url[0])-1),strlen($url[0]))==")"){ 
      $url[0]=substr($url[0],0,(strlen($url[0])-1)); 
      $add=')'; 
     } else if (substr($url[0],(strlen($url[0])-1),strlen($url[0]))=="]"){ 
      $url[0]=substr($url[0],0,(strlen($url[0])-1)); 
      $add=']'; 
     } 
     // make the urls hyper links 
     return preg_replace($reg_exUrl, '<a href="'.$url[0].'">'.$url[0].'</a>'.$add, $t); 
    } else { 
     // if no urls in the text just return the text 
     return $t; 
    } 
} 
1

C'est le seul que j'ai trouvé qui a travaillé avec www.

function link_it($text) 
{ 
    $text= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a  href=\"$3\" >$3</a>", $text); 
    $text= preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2<a href=\"http://$3\" >$3</a>", $text); 
    $text= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1<a href=\"mailto:[email protected]$3\">[email protected]$3</a>", $text); 
    return($text); 
} 

Espérons que cela vous aidera quelqu'un d'autre