2011-11-20 98 views

回答

0
$link = '<a href="'.$url.'" title="'.$anchor.'">'.$anchor.'</a> '; 
$text = preg_replace("/ ".$anchor." /" ,"" , $text , 1); 
// If the spaces were intended 
// OR 
$text = preg_replace("/".$anchor."/" ,"" , $text , 1); 
// If you do not mean for the anchor to have a space before and after it. 

這些正則表達式段必須是字符串或字符串數​​組。

+0

是的,謝謝你,我剛剛發現了這個錯誤=)並準備發佈它,但在這裏你是。 – Tim

+0

這個答案完全是垃圾。 [preg_replace()](http://php.net/manual/en/function.preg-replace.php)需要參數'mixed $ pattern','mixed $ replacement','string $ subject'。我確信他不是試圖在'1'(數字文字)中找到'$ anchor' ... –

+0

@macek:好吧,如果你不喜歡我的答案,請提供你自己的答案。而'1'處於極限位置。很高興看到您可以閱讀PHP.net網站(我糾正了它是一個字符串的位,以允許一串字符串),但您可能希望下次更仔細地閱讀一些內容。 –

0

你應該使用不同的分隔符,並且還利用雙引號在這種情況下:

$text = preg_replace("~$anchor~", $link, $text, 1); 

以前的錯誤是由你的語法無效或者造成,或者通過$anchor包含斜槓本身。 (這將需要逃脫,現在使用~作爲分隔符,$anchor可能不包含一個,否則請參閱preg_quote。)

0

我認爲您正在嘗試這樣做;

$text = "lorem ipsum dolor"; 

$anchor = "ipsum"; 

$link = '<a href="/foobar" title="'.$anchor.'">'.$anchor.'</a>'; 

$text = preg_replace('/'.preg_quote($anchor, '/').'/', $link, $text, 1); 

echo $text; 

#=> lorem <a href="/foobar" title="'.$anchor.'">'.$anchor.'</a> dolor 

看到它在這裏工作的tehplayground.com

你要使用preg_quote()在事件$anchor可能包含一些字符需要進行轉義爲正則表達式。

相關問題