0

私のウェブサイトで、リンクをこのような他のリンクに置き換えたい

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;
4

2 に答える 2

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"
);
于 2012-05-01T08:39:38.257 に答える
4
"/\[url]www|http://.([^'\"]*)\[\/url]/iU",
 ^               ^^                  ^

//真ん中の 2 つをエスケープする必要があるか\/\/、正規表現に別の区切り文字を使用することをお勧めします。

"~\[url]www|http://.([^'\"]*)\[/url]~iU",
于 2012-05-01T08:35:52.753 に答える