我有一个名为$initialdata
的替换数组:
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)
发生的事情是“sqrt”的“t”被我$initialdata
数组上的“t”值取代。我知道发生这种情况是因为我使用的是str_replace
,我需要使用preg_replace
来匹配整个单词,但我从未看到preg_replace
使用关联数组来匹配任何整个单词的任何实现。如果可能,如何实现这一目标?
答案 0 :(得分:3)
在正则表达式中,\b
是单词边界。这应该有效:
$data = array(
'/d/' => '1.40',
'/a/' => '1.67',
'/vi/' => '0',
'/\bt\b/' => '?'
);
$result = preg_replace(array_keys($data), array_values($data), $str);