我需要这样做:PHP - BB代码分析器 - 解析都设置高亮的链接标签,而不是标签链接
当用户插入一个BBCode的标签,用了preg_replace和正则表达式我做了一些改造中。
例如
function forumBBCode($str){
$format_search=array(
'#\[url=(.*?)\](.*?)\[/url\]#i'
);
$format_replace=array(
'<a class="lforum" target="_blank" href="$1">$2</a>'
);
$str=preg_replace($format_search, $format_replace, $str);
$str=nl2br($str);
return $str;
}
现在我想也是这样的:当用户用链接插入普通文本时,这也必须被转换。我不能做到这一点trought了preg_replace功能,因为如果我写了代码
$format_search
'#(www\..*?)#i'
$format_replace
'<a class="lforum" target="_blank" href="$1">$1</a>'
它会转换链接2时(在[URL],当链路没有这个标签)。
,所以我觉得这个功能:
function checkLinks($string) {
$arrelab="";
$arr=split(' |\r\n', $string);
for($i=0; $i<sizeof($arr); $i++) {
echo $i." - ".$arr[$i]."<br/>";
if ((strpos($arr[$i], 'www.')!==false) or (strpos($arr[$i], 'http://')!==false) or (strpos($arr[$i], 'ftp://')!==false)) {
if (strpos($arr[$i], '[url=')===false) {
$arr[$i]='<a class="lforum" target="_blank" href="'.$arr[$i].'">'.$arr[$i].'</a>';
}
}
$arrelab=$arrelab." ".$arr[$i];
}
return $arrelab;
}
的问题是,我需要一个分裂为新行,作为空的空间。 任何帮助,将不胜感激。
p.s.对不起,我的英语不好:)
欢呼
呃,我不明白你是什么意思,完全与该代码。 如果我有一个文本不包含“或>表达式不评估? 应该是不错的正则表达式不评估”http://“文本,如果它有字符串[url =,但我不能做到这一点... – markzzz 2010-07-09 19:52:40
这个正则表达式的作用是确保url已经不在链接中了,在* ['url ='regex。 – 2010-07-09 19:55:05
好吧,现在我明白他的意思了: )不错的一个,它似乎是不错的:) ps1。如果我想要“所有字符允许”后www这应该是好的没有?www \ ..?* 但它似乎是错... ps2。如果我想要http和ftp?我写(?:http | //)而不是(http://)? – markzzz 2010-07-09 20:02:51