Omi*_*mid 0 php regex preg-replace
我正在使用一个使用preg_replace如下函数的函数:
function replace($pattern, $replacement, $subject){
preg_replace("/^$pattern$/", $replacement, $subject);
}
replace('(\w+)/((\w+)/)?', 'name=\1&family=\2', 'Jame/');
Run Code Online (Sandbox Code Playgroud)
我无法编辑replace函数,只能用参数做一些事情.
如您所见,第二个模式((\w+)/)?是可选的,可能不存在.我想知道是否有方法可以得到一个结果,family如果不存在模式,那就意味着它\2是空的.
所以我应该:
'name=Jame'
Run Code Online (Sandbox Code Playgroud)
注意
我无法更改preg_replace签名或使用替代功能二人组合限制.寻找一个replacement pattern如果存在.
因为preg_replace,不要使它成为可选,明确表示.处理这两种情况:
$pattern = [
'((\w+)/(\w+)/)',
'((\w+)/)',
];
$replacement = [
'name=\1&family=\2',
'name=\1',
];
echo preg_replace($pattern, $replacement, 'Jame/');
Run Code Online (Sandbox Code Playgroud)
另一种选择是匹配所有部分,然后给它们一个带有第二个数组的名称,但是根据匹配数量对它进行切片.取决于您想要替换哪个字段.
| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |