【问题标题】:use preg_replace to replace whole words using associative array使用 preg_replace 使用关联数组替换整个单词
【发布时间】:2013-08-01 11:42:44
【问题描述】:

我有一个名为 $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 的任何实现。如果可能,如何实现?

【问题讨论】:

    标签: php regex preg-replace associative-array str-replace


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 2023-03-04
      • 2011-01-24
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多