在我的网站中,我想用其他链接替换链接
www.abc.com
或http://abc.com
将替换为
http://www.XXXXXX.com/sonal?www.abc.com
或
http://www.XXXXXX.com/sonal?http://abc.com
所以我使用这段代码,但是这段代码给出了一些错误
Warning: preg_replace() [function.preg-replace]: Unknown modifier '/'
in /home/XXXXX/public_html/YYYYYYYYY/KKKKKK.php on line 495
$search_array = array(
"/\[url]www|http://.([^'\"]*)\[\/url]/iU",
"/\[url]([^'\"]*)\[\/url]/iU",
"/\[url=www|http://.([^'\"\s]*)](.*)\[\/url]/iU",
"/\[url=([^'\"\s]*)](.*)\[\/url]/iU"
);
$replace_array = array(
"<a href=\"http://XXXXXX.com/sonal?.\\1\" target=\"_blank\" rel=\"nofollow\">www. \\1</a>",
"<a href=\"\\1\" target=\"_blank\" rel=\"nofollow\">\\1</a>",
"<a href=\"http://XXXXXX.com/sonal?.\\1\" target=\"_blank\" rel=\"nofollow\">\\2</a>",
"<a href=\"\\1\" target=\"_blank\" rel=\"nofollow\">\\2</a>"
);
$msg = preg_replace($search_array, $replace_array, $msg);
return $msg;
答案 0 :(得分:6)
解决这个问题的方法很少
逃避“/”
$search_array = array(
"/\[url]www|http:\/\/.([^'\"]*)\[\/url]/iU",
"/\[url]([^'\"]*)\[\/url]/iU",
"/\[url=www|http:\/\/.([^'\"\s]*)](.*)\[\/url]/iU",
"/\[url=([^'\"\s]*)](.*)\[\/url]/iU"
);
或使用不同的正则表达式分隔符,如“#”
$search_array = array(
"#\[url]www|http://.([^'\"]*)\[\/url]#iU",
"#\[url]([^'\"]*)\[\/url]#iU",
"#\[url=www|http://.([^'\"\s]*)](.*)\[\/url]#iU",
"#\[url=([^'\"\s]*)](.*)\[\/url]#iU"
);
答案 1 :(得分:4)
"/\[url]www|http://.([^'\"]*)\[\/url]/iU",
^ ^^ ^
您需要将中间的两个//
转义为\/\/
,或者更好的是,为正则表达式使用不同的分隔符:
"~\[url]www|http://.([^'\"]*)\[/url]~iU",