我找到了在文本中找到链接时创建html链接的例程
<?php
function makelink($text)
{
return preg_replace('/(http\:\/\/[a-zA-Z0-9_\-\.]*?) /i', '<a href="$1">$1</a> ', $text." ");
}
// works
echo makelink ("hello how http://www.guruk.com ");
// dont work
echo makelink ("hello how http://www.guruk.com/test.php ");
&GT;
正如您在示例中看到的那样,它只能在域中查找,而不是在该链接中存在页面或子目录时。
您是否可以为该功能提供解决方案以使用页面和子目录?
THX 克里斯
答案 0 :(得分:4)
字符?=&
用于包含查询字符串的网址。请注意,我将分隔符从/
更改为!
,因为表达式中有很多斜杠。另请注意,如果您处于不区分大小写的模式,则不需要A-Z
。
return preg_replace('!(http://[a-z0-9_./?=&-]+)!i', '<a href="$1">$1</a> ', $text." ");
答案 1 :(得分:0)
你的正则表达式应该在其字符类的末尾包含正斜杠:
/(http\:\/\/[a-zA-Z0-9_\-\.\/]*?) /i
应该这样做。
答案 2 :(得分:0)
没有RegEx:
<?php
// take a string and turn any valid URLs into HTML links
function makelink($input) {
$parse = explode(' ', $input);
foreach ($parse as $token) {
if (parse_url($token, PHP_URL_SCHEME)) {
echo '<a href="' . $token . '">' . $token . '</a>' . PHP_EOL;
}
}
}
// sample data
$data = array(
'test one http://www.mysite.com/',
'http://www.mysite.com/page1.html test two http://www.mysite.com/page2.html',
'http://www.mysite.com/?go=page test three',
'https://www.mysite.com:8080/?go=page&test=four',
'http://www.mysite.com/?redir=http%3A%2F%2Fwww.mysite.com%2Ftest%2Ffive',
'ftp://test:six@ftp.mysite.com:21/pub/',
'gopher://mysite.com/test/seven'
);
// test our sample data
foreach ($data as $text) {
makelink($text);
}
?>
<强>输出:强>
<a href="http://www.mysite.com/">http://www.mysite.com/</a>
<a href="http://www.mysite.com/page1.html">http://www.mysite.com/page1.html</a>
<a href="http://www.mysite.com/page2.html">http://www.mysite.com/page2.html</a>
<a href="http://www.mysite.com/?go=page">http://www.mysite.com/?go=page</a>
<a href="https://www.mysite.com:8080/?go=page&test=four">https://www.mysite.com:8080/?go=page&test=four</a>
<a href="http://www.mysite.com/?redir=http%3A%2F%2Fwww.mysite.com%2Ftest%2Ffive">http://www.mysite.com/?redir=http%3A%2F%2Fwww.mysite.com%2Ftest%2Ffive</a>
<a href="ftp://test:six@ftp.mysite.com:21/pub/">ftp://test:six@ftp.mysite.com:21/pub/</a>
<a href="gopher://mysite.com/test/seven">gopher://mysite.com/test/seven</a>