function link_it($text)
{
$text= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" target=\"_blank\">$3</a>", $text);
$text= preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2<a href=\"http://$3\" target=\"_blank\">$3</a>", $text);
$text= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1<a href=\"mailto:$2@$3\" target=\"_blank\">$2@$3</a>", $text);
return($text);
}
这是工作代码。
我正在开发一项新功能
function shorturl2full($url)
{
echo 'URL IS: ' . $url;
return "FULLLINK";
}
我们的想法是把网址拿回来。后来打算把它变成完整的URL。因此,t.co
将会显示完整的网址。
$text= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" target=\"_blank\">" . shorturl2full("$3") . "</a>", $text);
$text= preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2<a href=\"http://$3\" target=\"_blank\">" . shorturl2full("$3") . "</a>", $text);
$text= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1<a href=\"mailto:$2@$3\" target=\"_blank\">$2@$3</a>", $text);
return($text);
}
我的不好尝试。
因此,如果您点击链接,它应该使用原始链接,但您看到的应该是shorturl2full
的输出
就像<a href="t.co">FULLLINK</a>
我想尝试自己编写shorturl2full
函数,我想我对如何做这个有很好的想法。问题出在link_it
函数中......它需要将url传递给shorturl2full
函数并显示它返回的内容。
答案 0 :(得分:2)
您可以使用preg_replace_callback而不是preg_replace http://nz.php.net/manual/en/function.preg-replace-callback.php
function link_it($text)
{
$text= preg_replace_callback("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", 'shorturl2full', $text);
$text= preg_replace_callback("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", 'shorturl2full', $text);
$text= preg_replace_callback("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", 'shorturl2full', $text);
return($text);
}
function shorturl2full($url)
{
$fullLink = 'FULLLINK';
// $url[0] is the complete match
//... you code to find the full link
return '<a href="' . $url[0] . '">' . $fullLink . '</a>';
}
希望这有帮助
答案 1 :(得分:0)
在previous answer中我展示了一个名为make_clickable
的函数,该函数有一个可选的回调参数,如果设置了,它将应用于每个URI:
make_clickable($text, 'shorturl2full');
也许它有用或者至少提供一些想法。