繁体   English   中英

PHP 花括号替换多个值

[英]PHP curly braces replace multiple values

我想将值 lara 某些单词放在大括号中。 但它给了我 $ str 结果。 因此,它向我显示了相同的词,而没有进行任何替换。

我尝试如下:

function replace($Str){ 
   preg_match_all('/{(\w+)}/', $Str, $matches);
   $afterStr = $Str;
   foreach ($matches[0] as $index => $var_name) {
     if (isset(${$matches[1][$index]})) {
        $afterStr = str_replace($var_name, ${$matches[1][$index]}, $afterStr); 
     }
   }
     return $afterStr;
}

$value1 = 'Apple';
$value2 = 'Orange';

$text = 'The colors of {value1} and {value2} are different.';

echo replace($text);

上述代码给我的结果

{value1} 和 {value2} 的 colors 不同。

但它应该是这样的:

Apple 和 Orange 的 colors 不同。

你能告诉我我缺少什么以便我能得到正确的结果吗?

提前致谢..

您的正则表达式具有{}元字符。 您无法按原样匹配它们。 你要么用反斜杠\转义它,要么使用preg_quote()

您的代码非常冗长,带有循环。 您可以传递值数组以替换为目标值数组,而str_replace可以很好地完成这项工作。

<?php

function replace($Str,$values = []){ 
   preg_match_all('/\{(\w+)\}/', $Str, $matches);
   return str_replace($matches[0],$values,$Str);
}

$value1 = 'Apple';
$value2 = 'Orange';

$text = 'The colors of {value1} and {value2} are different.';

echo replace($text,[$value1,$value2]);

您还错过了将 $value1 和 $value2 传递给 function。 如果要替换多个值,我的建议是在数组中传递它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM