链接PHP文本

时间:2012-02-12 16:00:35

标签: php api linkify

我正在使用TinySong api生成链接,它有效,现在我尝试使用linkify。它没有。我不确定为什么它没有链接我相信我使用了正确的变量。这是代码。

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




}


?>

如何使结果链接可点击?我甚至使用正确的代码?谢谢

2 个答案:

答案 0 :(得分:1)

这是我发现使用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:$2@$3\">$2@$3</a>", $text);
    return($text);
}

希望这会帮助别人

答案 1 :(得分:0)

这在我使用它的网站上运作良好...

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