2012-09-02 167 views
1

函數str_replace()接受一個數組作爲其第一個參數,但我沒有看到任何方式來存儲字符串用於第二個參數,找到的文字被替換。例如,如果我想用括號或引號格式化字符串。存儲在str_replace()中搜索數組時匹配的特定值

下面是一個例子。說我一直在尋找插入引號在$陣列的話,當他們吐回了或單詞的情況下,從所有小寫改爲在$陣列設置的情況下:

$array = array('Over','Dog','Quick'); 

$string = "The quick brown fox jumps over the lazy dog"; 

$string = explode(" ",$string); 

foreach ($string as $word) { 

    echo str_replace($array, "???", $word); 

    echo " "; 

} 

,將返回The ??? brown fox jumps ??? the lazy ???。我意識到這可能是一個正則表達式的工作,但我一直無法弄清楚如何讓它來處理格式化和替換。我覺得我在這裏錯過了一些東西,但沒有任何我谷歌甚至觸及這個問題。

+0

這是preg_replace函數是:http://uk.php.net/preg_replace – HappyTimeGopher

+0

。看看['preg_replace_callback '](http://us.php.net/preg_replace_callback)。有了它,您可以指定一個函數,將用於將匹配值轉換爲想要的替換值。 (此外,您可以將數組作爲第一個參數傳遞給'str_replace' /'preg_replace',並且該數組中的每個元素都將被替換。) – DCoder

+1

也使用數組作爲第二個參數。 –

回答

2
$array = array('Over', 'Dog', 'Quick'); 

$string = "The quick brown fox jumps over the lazy dog"; 

echo str_ireplace($array, $array, $string); 

在這裏看到它在行動:http://viper-7.com/q7n7uw


因此,舉例來說,如果你想要把引號字符串,使用:

$array = array('Over', 'Dog', 'Quick'); 
$replacements = array(); 
foreach($array as $item) $replacements[] = '"' . $item . '"'; 

$string = "The quick brown fox jumps over the lazy dog"; 

echo str_ireplace($array, $replacements, $string); 

,請參閱: http://viper-7.com/2afgL5


然而實際上,這是preg_replace工作:

$search = array('Over','Dog','Quick'); 

foreach($search as &$item) $item = '~\b(' . $item . ')\b~i'; 

$string = "The quick brown fox jumps over the lazy dog"; 

echo preg_replace($search, '"$1"', $string); 

在這裏看到:http://viper-7.com/nAlqzX

+0

謝謝。我不想進入preg功能 – Daniel