2013-07-31 47 views
1

更換整個單詞我有這樣的更換陣列命名爲$initialdata使用的preg_replace使用關聯數組

array ($initialdata) 
    'd' => string '1.40' (length=4) 
    'a' => string '1.67' (length=4) 
    'vi' => string '0' (length=1) 
    't' => string '?' (length=1) 

然後,我有這個字符串:

$str = "-(vi + sqrt(2*a*d + vi^2))/a)"; 

當我這樣做:

str_replace(array_keys($initialdata),array_values($initialdata),$str); 

我得到:

-(0 + sqr?(2*1.67*1.40 + 0^2))/1.67) 

發生什麼事是我的$initialdata陣列上的「sqrt」的「t」被替換爲「t」的值。我知道這是因爲我使用str_replace,我需要使用preg_replace匹配整個單詞,但是我從來沒有看到任何使用關聯數組匹配任何整個單詞的preg_replace的實現。如果可能,這怎麼能實現?

回答

3

在正則表達式中,\b是單詞邊界。這應該工作:

$data = array(
    '/d/' => '1.40', 
    '/a/' => '1.67', 
    '/vi/' => '0', 
    '/\bt\b/' => '?' 
); 

$result = preg_replace(array_keys($data), array_values($data), $str); 
+0

我覺得這個帖子也爲我工作http://whats-online.info/science-and-tutorials/99/PHP-replace-the-whole-word-only-using- preg_replace函數陣列/ –