2012-05-01 33 views
0

在我的网站,我想有这样的的preg_replace()[function.preg替换]:未知的修饰词“/”在/ home/

www.abc.comhttp://abc.com

更换一些其他的链接来替代链接

http://www.XXXXXX.com/sonal?www.abc.com

http://www.XXXXXX.com/sonal?http://abc.com

所以我USI NG这个代码,但这个代码是给一些错误

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

看起来像'HTTP后转义'/'字符: ' – Hamish

+0

@hamish其中PLZ告诉 – Steeve

+1

* “HTTP后':'” * – deceze

回答

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" 
); 
+0

现在它的工作错误已经消失了,但当我使用$ msg = preg_replace($ search_array,$ replace_array,$ msg)时,我的左侧菜单已消失。返回$味精; – Steeve

4
"/\[url]www|http://.([^'\"]*)\[\/url]/iU", 
^    ^^    ^

你要么需要在中间的两个//逃到\/\/,或者更好的,使用对于正则表达式不同的分隔符:

"~\[url]www|http://.([^'\"]*)\[/url]~iU", 
+0

工作。我还没有想到这个小错误.thx – Steeve

+0

现在它的工作错误已经但是当我使用$味精=的preg_replace($ search_array,$ replace_array,$味精)我的左边菜单disappering; 返回$味精; – Steeve

相关问题