Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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
Javascript 帮助与正则表达式-我如何才能使一些网址不跟随?_Javascript_Regex_Nofollow - Fatal编程技术网

Javascript 帮助与正则表达式-我如何才能使一些网址不跟随?

Javascript 帮助与正则表达式-我如何才能使一些网址不跟随?,javascript,regex,nofollow,Javascript,Regex,Nofollow,好的,我制作了这个函数,它可以很好地将大多数URL(如pies.com或www.cakes.com)转换为实际的链接标记 function render_hyperlinks($str){ $regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie'; $str = preg

好的,我制作了这个函数,它可以很好地将大多数URL(如pies.com或www.cakes.com)转换为实际的链接标记

function render_hyperlinks($str){       
    $regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie';    
    $str = preg_replace($regex,"'<a href=\"http://www.'.'$3'.'\" target=\"_blank\">'.strtolower('$3').'</a>'", $str);
    return $str;    
}

如果(包含x){addy y}到我的正则表达式中,是否可以实现这个


这就是所谓的“回溯”吗?

也许您正在寻找的是preg\u replace\u回调:

function link($matches)
{
    $str_return = '<a href="http://www.'.$matches[3].'" target="_blank"';
    if(in_array($matches[3], $no_follow_array))
    {
        $str_return .= ' no-follow';
    }
    $str_return .='>'.strtolower($matches[3]).'</a>';
}

$regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie';    
$str = preg_replace_callback($regex,'link', $str);
函数链接($matches)
{
$str_return='';
}
$regex='/(http:\/\/)?(www\)([a-zA-Z0-9\-\.]+\.(com | co\.uk | org(\.uk)| tv | biz | me)(\/[a-zA-Z0-9\.\\.&=\+])*)/ie';
$str=preg_replace_回调($regex,'link',$str);

这看起来很棒,但是我在字符方面遇到了问题,似乎preg\u replace\u callback不接受“e”修饰符,所以现在它正在捕获“n”形式的“\n”新行?您能提供一个输入字符串的示例吗?难以构建盲正则表达式:)啊,这是我的错误,我是双重逃离换行符,您的解决方案工作得非常好,同时也感谢Marty的帮助
function link($matches)
{
    $str_return = '<a href="http://www.'.$matches[3].'" target="_blank"';
    if(in_array($matches[3], $no_follow_array))
    {
        $str_return .= ' no-follow';
    }
    $str_return .='>'.strtolower($matches[3]).'</a>';
}

$regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie';    
$str = preg_replace_callback($regex,'link', $str);