preg_match_all 有回调?
preg_match_all with callback?
我对实时替换数字匹配项并将其处理为十六进制感兴趣。
我想知道是否可以不使用 foreach 循环。
所以我...
介于两者之间的所有事情:
=
{数值} ;
将被操纵为:
=
{十六进制数值} ;
preg_match_all('/\=[0-9]\;/',$src,$matches);
是否有 preg_match_all 的任何回调,所以我可以在 preg_match_all 捕捉到每场比赛(实时)后立即操纵它们,而不是事后执行循环。
这不是正确的语法,但只是为了让您理解:
preg_match_all_callback('/\=[0-9]\;/',$src,$matches,{convertAll[0-9]ToHexadecimal});
您可以将它们与 /=\d+?;/
之类的正则表达式匹配,然后您的回调将类似于...
function($matches) { return dechex($matches[1]); }
结合起来,它给了我们...
preg_replace_callback('/=(\d+?);/', function($matches) {
return dechex($matches[1]);
}, $str);
或者,您可以使用正 lookbehind/forward 来匹配定界符,然后直接传递 'dechex'
作为回调。
或者您可以使用 T-Regx tool,这要好得多! (自动定界符,异常而不是警告,更干净 API)
pattern('=(\d+?);')->replace($str)->group(1)->callback('dechex');
或者如果您更喜欢匿名函数
pattern('=(\d+?);')->replace($str)->group(1)->callback(function (Group $group) {
return dechex($group);
});
我对实时替换数字匹配项并将其处理为十六进制感兴趣。
我想知道是否可以不使用 foreach 循环。
所以我...
介于两者之间的所有事情:
=
{数值} ;
将被操纵为:
=
{十六进制数值} ;
preg_match_all('/\=[0-9]\;/',$src,$matches);
是否有 preg_match_all 的任何回调,所以我可以在 preg_match_all 捕捉到每场比赛(实时)后立即操纵它们,而不是事后执行循环。
这不是正确的语法,但只是为了让您理解:
preg_match_all_callback('/\=[0-9]\;/',$src,$matches,{convertAll[0-9]ToHexadecimal});
您可以将它们与 /=\d+?;/
之类的正则表达式匹配,然后您的回调将类似于...
function($matches) { return dechex($matches[1]); }
结合起来,它给了我们...
preg_replace_callback('/=(\d+?);/', function($matches) {
return dechex($matches[1]);
}, $str);
或者,您可以使用正 lookbehind/forward 来匹配定界符,然后直接传递 'dechex'
作为回调。
或者您可以使用 T-Regx tool,这要好得多! (自动定界符,异常而不是警告,更干净 API)
pattern('=(\d+?);')->replace($str)->group(1)->callback('dechex');
或者如果您更喜欢匿名函数
pattern('=(\d+?);')->replace($str)->group(1)->callback(function (Group $group) {
return dechex($group);
});