2012-02-12 7 views
0

私はリンクを生成するためにTinySong APIを使用していますが、今はlinkifyを使って試しました。それはしませんでした。なぜ私は正しい変数を使用したと信じているのか分かりません。ここにコードがあります。Linkify PHPのテキスト

<?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  = ''; 
    } 




} 


?> 

結果リンクをクリック可能にするにはどうすればよいですか?私は正しいコードを使用していますか?おかげ

+0

他の誰かを助けます。個人的には、潜在的な問題を探してコードを一行一列に並べる欲望や傾向がありません。何が具体的に動作していないのか把握し、それについて質問するために、少し前のデバッグを行います。 – rdlowrey

答えて

0

は、これは私がこれはWWWで働いていた私が見つけた唯一のものです...

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

のためにそれを使用していますサイトにうまく機能しています。

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); 
} 

うまくいけば、これはあなたがあなたのコードの代わりに、コードブロックにスクリプト全体に相当するもののダンプに特定の問題領域を分離する場合は正のヘルプを取得する可能性が高くなります

関連する問題