Php K2 Joomla项目注释中的URL错误
K2正在将不必要的文本解析为项目注释中的URL 1.使用joomla管理面板创建一个项目,并作为来宾输入带有以下文本的评论 “node.js是一个强大的js引擎。Enven。虽然这不是一个有效的url,但它已被呈现为有效的。url任何带有xxx.xxx的内容都被解析为url,甚至与子域语法iam.not.valid(即电子邮件.yahoo.com)类似,这真是太有趣了”Php K2 Joomla项目注释中的URL错误,php,regex,joomla2.5,joomla-k2,Php,Regex,Joomla2.5,Joomla K2,K2正在将不必要的文本解析为项目注释中的URL 1.使用joomla管理面板创建一个项目,并作为来宾输入带有以下文本的评论 “node.js是一个强大的js引擎。Enven。虽然这不是一个有效的url,但它已被呈现为有效的。url任何带有xxx.xxx的内容都被解析为url,甚至与子域语法iam.not.valid(即电子邮件.yahoo.com)类似,这真是太有趣了” 在上面的coomment node.js中,即使valid.url、xxx.xxx iam.not.valid i.e-mai
$comments=$model->getItemComments($item->id,$limitstart,$limit,$commentsPublished);
(0-9-9a-扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎!(((0-9-9-9-9-9-9)上述上述((0-9-9-9a-9-9-9-9-9-扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎扎[0-9]{1,4}](/[0-9a-zA-Z!;
对于($i=0;$icommentText=nl2br($comments[$i]->commentText);
$comments[$i]->commentText=preg_replace($pattern,,$comments[$i]->commentText);
$comments[$i]->userImage=K2HelperUtilities::getAvatar($comments[$i]->userID,$comments[$i]->commentEmail,$params->get('commenterImgWidth');
如果($comments[$i]->userID>0){
$comments[$i]->userLink=K2HelperRoute::getUserRoute($comments[$i]->userID);
}
否则{
$comments[$i]->userLink=$comments[$i]->commentURL;
}
if($reportSpammerFlag&&$comments[$i]->userID>0){
$comments[$i]->reportUserLink=JRoute::(('index.php?option=com\u k2&view=comments&task=reportSpammer&id='。$comments[$i]->userID.&format=raw');
}
否则{
$comments[$i]->reportUserLink=false;
}
}
有人能帮忙修复上面的正则表达式吗?谢谢在没有空格的时间段内,每当用户键入时,您都会遇到此问题。您可以添加一些登录来测试有效的TLD,但即使这样也不是完美的,因为有很多TLD会愚弄逻辑,比如.it 如果您想尝试修复正则表达式,那么确定字符串是否为URL的模式就在这里-
$pattern = "@\b(https?://)?(([0-9a-zA-Z_!~*'().&=+$%-]+:)?[0-9a-zA-Z_!~*'().&=+$%-]+\@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+\.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z]\.[a-zA-Z]{2,6})(:[0-9]{1,4})?((/[0-9a-zA-Z_!~*'().;?:\@&=+$,%#-]+)*/?)@";
就个人而言,我只是通过删除或注释掉这些代码来完全禁用注释中的链接-
$comments[$i]->commentText = preg_replace($pattern, '<a target="_blank" rel="nofollow" href="\0">\0</a>', $comments[$i]->commentText);
$comments[$i]->commentText=preg_replace($pattern,,$comments[$i]->commentText);
$comments[$i]->commentText = preg_replace($pattern, '<a target="_blank" rel="nofollow" href="\0">\0</a>', $comments[$i]->commentText);