PHP 的strlen()
函数不支持 UTF-8,因此我想将每个用法strlen()
与支持 UTF-8 的对应项交换:mb_strlen()
. 但是,mb_strlen()
需要一个额外的参数:
$length = strlen($someString);
$length = mb_strlen($someString, 'UTF-8');
如果没有第二个参数,一个简单的 Perl 正则表达式将处理交换:
$ find . -name '*' -print0 | xargs -0 perl -pi -e 's/strlen/mb_strlen/g'
我尝试使用捕获组和反向引用,但 VIM 样式的语法要么不支持(在最近的 Ubuntu 上),要么我无法弄清楚。我已经尝试了几种变体但没有成功:
$ find . -name '*' -print0 | xargs -0 perl -pi -e 's/strlen\((\.*)\)/mb_strlen\($1, "UTF-8"\)/g'
此外,可能有诸如trim()
inside之类的函数,strlen()
所以我必须使这个贪婪,但我不确定贪婪的运算符应该准确地去哪里。这个正则表达式应该怎么写?