2010-11-23 54 views
1

行,所以我有這個PHP腳本:的preg_replace不工作:(

<?php 

$stringz = "Dan likes to eat pears and his favorite color is green!"; 
$patterns = array("/pears/","/green/"); 
$string = preg_replace($patterns, '<b>\\1</b>', $stringz); 
echo "<textarea rows='30' cols='100'>$string</textarea>"; 

?> 

,當我運行它,我得到這個: Dan likes to eat <b></b> and his favorite color is <b></b>!

是假設有一個字。 ..但它不...

回答

4

這是因爲喲你沒有明確地捕捉任何東西。 \\0抓住了整場比賽,當然,但爲了捕捉特定部分,你需要的,如果你想使用\\1\\2\\3等發生變化$patterns這種使用捕獲組:

$patterns = array("/(pears)/","/(green)/"); 

()「 s表示捕獲組,並且其中捕獲的任何值都存儲在參考文獻\\n中,其中\\n涉及第1個索引的捕獲組。

+0

其實你總是在'\ 0`中捕捉整個事物,不管你是否有括號組。 – cambraca 2010-11-23 01:26:02

+0

對,我的意思是他沒有*明確地捕捉任何東西。 :) – Alex 2010-11-23 01:27:07

0

如何

$patterns = array("/(pears)/","/(green)/"); 

\\1適用於某個主題,這是括號中的任何內容。