Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP如何自动计算输入值并用正则表达式替换它?_Php_Regex_Preg Replace - Fatal编程技术网

PHP如何自动计算输入值并用正则表达式替换它?

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

我将函数设置为将{1}替换为$param1,如下所示:


您希望在数组中循环,然后使用数组的索引对需要替换的值执行字符串替换:

<?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