PHP如何自动计算输入值并用正则表达式替换它?
我将函数设置为将{1}替换为$param1,如下所示:PHP如何自动计算输入值并用正则表达式替换它?,php,regex,preg-replace,Php,Regex,Preg Replace,我将函数设置为将{1}替换为$param1,如下所示: 您希望在数组中循环,然后使用数组的索引对需要替换的值执行字符串替换: <?php $lang = '{1} say {2} {3} {4}'; $param = array( '1' => 'aaa', '2' => 'bbb', '3' => 'ccc', '4' => 'ddd' ); foreach($param as $index => $p) { $lan
您希望在数组中循环,然后使用数组的索引对需要替换的值执行字符串替换:
<?php
$lang = '{1} say {2} {3} {4}';
$param = array(
'1' => 'aaa',
'2' => 'bbb',
'3' => 'ccc',
'4' => 'ddd'
);
foreach($param as $index => $p) {
$lang = str_replace('{' . $index . '}', $p, $lang);
}
echo $lang; //aaa say bbb ccc ddd
就我个人而言,我会使用方括号
<?php
$lang = '[1] say [2] [3] [4]';
$param = array(
'1' => 'aaa',
'2' => 'bbb',
'3' => 'ccc',
'4' => 'ddd'
);
foreach($param as $index => $p) {
$lang = str_replace("[$index]", $p, $lang);
}
echo $lang; //aaa say bbb ccc ddd
那么你就可以避免断开绳子了
使用字符串索引和数字:
这个答案比使用preg_replace_回调获得更好的性能时间和内存,但是我的项目不仅使用数字,还使用一些单词,比如Character_1=>'John',你可以使用字符串索引,它也可以工作?是的,肯定是一个比使用preg_replace_回调更好的解决方案,但要根据OP开发自己的最佳实践xD!天哪,真管用!!而且比预更换更快!!最好的答案!!您是否考虑过简单地使用格式化字符串@Zeitounator是的,但在本例中,我在$lang数组中使用字符串,输入值在我的项目中就这么简单,所以我认为答案对我来说就足够了
<?php
$lang = '[1] say [2] [3] [4]';
$param = array(
'1' => 'aaa',
'2' => 'bbb',
'3' => 'ccc',
'4' => 'ddd'
);
foreach($param as $index => $p) {
$lang = str_replace("[$index]", $p, $lang);
}
echo $lang; //aaa say bbb ccc ddd
<?php
$lang = '{char_1} say {2} {char_3} {4}';
$param = array(
'char_1' => 'aaa',
'2' => 'bbb',
'char_3' => 'ccc',
'4' => 'ddd'
);
foreach($param as $index => $p) {
$lang = str_replace('{' . $index . '}', $p, $lang);
}
echo $lang; //aaa say bbb ccc ddd