1

我有这个替换数组名为$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使用关联数组匹配任何整个单词的任何实现。如果可能的话,如何做到这一点?

4

1 回答 1

3

在正则表达式中,\b是单词边界。这应该有效:

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

$result = preg_replace(array_keys($data), array_values($data), $str);
于 2013-07-31T19:27:19.980 回答