我有以下代码:
<?php
$clasa = 'HHH';
$length = '100';
$width = 200;
$depth = 300;
$string1 = '{{clasa}}{{length}}{{width}}';
$string2 = '{{clasa}}{{length}}{{depth}}';
$string3 = '{{clasa}}_word{{length}},anything{{depth}}';
$new1 = preg_replace('/{{([a-zA-Z\_\-]*?)}}/', ${'"$1"'}, $string1);
echo $new1;
?>
我的新字符串应为HHH100200
我添加了$ depth变量,以便您可以看到我的字符串不会始终使用相同的变量。 我非常接近这样做,但无法创建变量名称;
另外 - 我不熟悉正则表达式 - 我只想在括号内允许a-zA-Z0-9。
答案 0 :(得分:1)
在这里使用正则表达式不是一种方法,使用带有strtr
或str_replace
的数组:
$trans = ['{{clasa}}' => 'HHH',
'{{length}}' => '100',
'{{width}}' => '200',
'{{depth}}' => '300'];
$str1 = strtr($str1, $trans);
答案 1 :(得分:0)
谢谢你,@ Rizier123
<?php
$clasa = 'HHH';
$length = '100';
$width = 200;
$depth = 300;
$string1 = '{{clasa}}{{length}}{{width}}';
$string2 = '{{clasa}}{{lenght}}{{depth}}';
$string3 = '{{clasa}}_word{{lenght}},anything{{depth}}';
//$new1 = preg_replace('/{{([a-zA-Z\_\-]*?)}}/', ${'"$1"'}, $string1);
$new1 = preg_replace_callback("/{{([a-zA-Z\_\-]*?)}}/", function($m){
global ${$m["1"]};
return ${$m["1"]};
}, $string1);
echo $new1;