是否可以在PHP';s preg#U replace函数';替换参数?
下面是我想用其他东西替换的一些PHP是否可以在PHP';s preg#U replace函数';替换参数?,php,regex,Php,Regex,下面是我想用其他东西替换的一些PHP Ks. <?kys(1959,"kysymys 1959")?>. Ks. <?kys(1959)?>. Ks。 Ks。 我有一个正则表达式,它既可以找到,也可以很好地工作: <\?kys\((\d+)(,"([\s\S]+)")?\)\?> 我用Regex101.com测试(并设计)了它: 所以至少会有匹配的1美元。但也可以有2美元和3美元的匹配。是否可以让preg_re
Ks. <?kys(1959,"kysymys 1959")?>.
Ks. <?kys(1959)?>.
Ks。
Ks。
我有一个正则表达式,它既可以找到,也可以很好地工作:
<\?kys\((\d+)(,"([\s\S]+)")?\)\?>
我用Regex101.com测试(并设计)了它:
所以至少会有匹配的1美元。但也可以有2美元和3美元的匹配。是否可以让preg_replace
用以下逻辑替换匹配项:如果$3,则使用$3;否则使用$1?您可以使用
见:
$str='Ks。
Ks.';
$re='/Usepreg\u replace\u callback
No,因为它将连接两个匹配项,这不是我想要的。我要么要,要么要。
$str = 'Ks. <?kys(1959,"kysymys 1959")?>.
Ks. <?kys(1959)?>.';
$re = '/<\?kys\((\d+)(?:,"([^"]+)")?\)\?>/';
echo preg_replace_callback($re, function($m) {
return empty($m[2]) ? $m[1] : $m[2];
}, $str);