簡體   English   中英

使用preg_replace使用關聯數組替換整個單詞

[英]use preg_replace to replace whole words using associative array

我有一個名為$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任何實現。 如果可能,如何實現?

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM