Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php K2 Joomla项目注释中的URL错误_Php_Regex_Joomla2.5_Joomla K2 - Fatal编程技术网

Php K2 Joomla项目注释中的URL错误

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

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-mail.yahoo.com被呈现为有效url。但在这种情况下,只有mail.yahoo.com是有效的,其他网站则无效
  • K2正在使用$JHOME/components/com_K2/views/item/view.html.php行(159-178)中的以下代码片段使用一些智能智能

    $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);