想要创建一个以http://或www clickable开头的字符串。
str_replace("http://", "$string", "<a href='$string'>");
str_replace("www", "$string", "<a href='$string'>");
不应该是那样的吗?
答案 0 :(得分:3)
你在找这样的东西吗?
<?php
$content = 'this is a test http://www.test.net www.nice.com hi!';
$regex[0] = '|(http://[^\s]+)|i';
$replace[0] = '<a href="${1}">${1}</a>';
$regex[1] = '| (www[^\s]+)|i';
$replace[1] = ' <a href="http://${1}">${1}</a>';
echo preg_replace($regex, $replace, $content);
?>
<强>更新强> 感谢macbirdie指出问题所在!我试着解决它。然而,只有在www之前有空格时它才有效。也许有人会想出一些更聪明,更优雅的东西。
答案 1 :(得分:2)
我使用的东西:
function linkify_text($text) {
$url_re = '@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@';
$url_replacement = "<a href='$1' target='_blank'>$1</a>";
return preg_replace($url_re, $url_replacement, $text);
}
希望这有帮助。
答案 2 :(得分:1)
function clicky($text) {
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)', '<a href="$1">$1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '$1<a href="http://$2">$2</a>', $text);
$text = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})', '<a href="mailto:$1">$1</a>', $text);
return $text;
}
答案 3 :(得分:0)
我看到锚标签内没有文字,这使得它不可见。
答案 4 :(得分:0)
您正在寻找的是正则表达式。像这样......
$link = preg_replace('/(http:\/\/[^ ]+)/', '<a href="$1">$1</a>', $text);
答案 5 :(得分:0)
str_replace具有不同的参数顺序(您的版本会将http://
中<a href='$string'>
的所有出现替换为$string
)。
如果你想在其他文本中创建html链接,那么你需要使用正则表达式而不是常规替换:
preg_replace('/(http:\/\/\S+/)', '<a href="\1">\1</a>', $subject_text);
答案 6 :(得分:0)
Merkuro的解决方案有一些调整。
<?php
$content = 'this is a test http://www.test.net www.nice.com hi!';
$regex[0] = '`(|\s)(http://[^\s\'\"<]+)`i';
$replace[0] = '<a href="${2}">${2}</a>';
$regex[1] = '`(|\s)(www\.[^\s\'\"<]+)`i';
$replace[1] = ' <a href="http://${2}">${2}</a>';
echo preg_replace($regex, $replace, $content);
?>
模式:
(|\s)
匹配字符串或空格的开头。您也可以使用单词边界。
\b
我添加了一个终止网址的其他字符,“,”,&lt;。