php preg_replace() 索引数组问题
php preg_replace() indexed array issue
这是程序:
$string = 'Inquiry {{inquiry:number}} is assigned to {{details_1}}';
$patterns = array();
$patterns[0] = '/({{)(.*)(}})/U';
$patterns[1] = '/({{)(.*)(}})/U';
$replacements = array();
$replacements[1] = 15;
$replacements[0] = 20;
ksort($patterns);
ksort($replacements);
echo preg_replace($patterns, $replacements, $string);
它应该给出输出:
Inquiry 20 is assigned to 15
但我得到的是:
Inquiry 20 is assigned to 20
我想知道 preg_replace 是否有问题?
注意:我正在尝试用相应的值替换 {{ .. }} 中的字符串,包括大括号。
那是因为替换是一个接一个地处理的
您的模式 #0 匹配 {{}}
中的所有内容,因此占位符和它们都被替换为您的替换 #0.
当模式 #1 被处理后,没有更多的 {{}}
剩余。
试试这个:
$string = 'Inquiry {{inquiry:number}} is assigned to {{details_1}}';
$patterns = array();
$patterns[0] = '/({{)(inquiry:number)(}})/U';
$patterns[1] = '/({{)(details_1)(}})/U';
$replacements = array();
$replacements[1] = 15;
$replacements[0] = 20;
ksort($patterns);
ksort($replacements);
echo preg_replace($patterns, $replacements, $string);
$replArray = array(
'{{inquiry:number}}',
'{{details_1}}'
);
$valueArray = array (15,20);
echo str_replace($replArray,$valueArray,$patern);
如果你想使用模板,你需要解析变量,并检查正确的队列,例如 {}
- 这个正确,{{}
- 不正确。
默认情况下,preg_replace
替换所有匹配项。只需将可选参数“limit”添加到您的脚本中,它就会起作用:
echo preg_replace( $patterns, $replacements, $string, 1 );
这是程序:
$string = 'Inquiry {{inquiry:number}} is assigned to {{details_1}}';
$patterns = array();
$patterns[0] = '/({{)(.*)(}})/U';
$patterns[1] = '/({{)(.*)(}})/U';
$replacements = array();
$replacements[1] = 15;
$replacements[0] = 20;
ksort($patterns);
ksort($replacements);
echo preg_replace($patterns, $replacements, $string);
它应该给出输出:
Inquiry 20 is assigned to 15
但我得到的是:
Inquiry 20 is assigned to 20
我想知道 preg_replace 是否有问题?
注意:我正在尝试用相应的值替换 {{ .. }} 中的字符串,包括大括号。
那是因为替换是一个接一个地处理的
您的模式 #0 匹配 {{}}
中的所有内容,因此占位符和它们都被替换为您的替换 #0.
当模式 #1 被处理后,没有更多的 {{}}
剩余。
试试这个:
$string = 'Inquiry {{inquiry:number}} is assigned to {{details_1}}';
$patterns = array();
$patterns[0] = '/({{)(inquiry:number)(}})/U';
$patterns[1] = '/({{)(details_1)(}})/U';
$replacements = array();
$replacements[1] = 15;
$replacements[0] = 20;
ksort($patterns);
ksort($replacements);
echo preg_replace($patterns, $replacements, $string);
$replArray = array(
'{{inquiry:number}}',
'{{details_1}}'
);
$valueArray = array (15,20);
echo str_replace($replArray,$valueArray,$patern);
如果你想使用模板,你需要解析变量,并检查正确的队列,例如 {}
- 这个正确,{{}
- 不正确。
默认情况下,preg_replace
替换所有匹配项。只需将可选参数“limit”添加到您的脚本中,它就会起作用:
echo preg_replace( $patterns, $replacements, $string, 1 );