内爆在用于 preg_replace_callback 的模式中有什么作用?
What does implode do in a pattern used for preg_replace_callback?
我不是 php 开发者,希望得到一些帮助来理解
$keys = array_keys($parameters['macrons']);
$pattern = '/([' . implode('', $keys) . '])ー/u';
return preg_replace_callback($pattern, function($matches) use ($parameters) {
return $parameters['macrons'][$matches[1]];
}, $str);
还有一个类似这样的 yaml 文件:
- function: transliterateChoonpu
parameters:
macrons:
a: ā
i: ī
u: ū
e: ē
o: ō
此代码查找一些元音后跟 ー(U+30FC Unicode character) in the string $str
and replace them with their equivalent chōonpu(关于函数名称似乎很明显)。
构建模式
$keys = array_keys($parameters['macrons']);
$parameters['macrons']
是一个关联数组:
array(
'a' => 'ā',
'i' => 'ī',
'u' => 'ū',
'e' => 'ē',
'o' => 'ō'
)
键被 $keys
引用:['a', 'i', 'u', 'e', 'o']
。
$pattern = '/([' . implode('', $keys) . '])ー/u';
Imploding 没有分隔符的键允许生成匹配任何元音(y 除外)后跟 U+30FC Unicode 的结果模式 '/([aiueo])ー/u'
Unicode 字符串中的字符(称为 片假名-平假名延音标记 )。
替换元音
return preg_replace_callback($pattern, function($matches) use ($parameters) {
return $parameters['macrons'][$matches[1]];
}, $str);
对于每个匹配的元音,preg_replace_callback 调用匿名函数作为第二个参数传递给它匹配的元音。此回调的结果替换结果字符串中匹配的元音(由 preg_replace_callback 返回)。
回调只是 returns $parameters['macrons']
关联数组中匹配元音索引的值。
因此,元音被相应的 chōonpu 替换了!
我不是 php 开发者,希望得到一些帮助来理解
$keys = array_keys($parameters['macrons']);
$pattern = '/([' . implode('', $keys) . '])ー/u';
return preg_replace_callback($pattern, function($matches) use ($parameters) {
return $parameters['macrons'][$matches[1]];
}, $str);
还有一个类似这样的 yaml 文件:
- function: transliterateChoonpu
parameters:
macrons:
a: ā
i: ī
u: ū
e: ē
o: ō
此代码查找一些元音后跟 ー(U+30FC Unicode character) in the string $str
and replace them with their equivalent chōonpu(关于函数名称似乎很明显)。
构建模式
$keys = array_keys($parameters['macrons']);
$parameters['macrons']
是一个关联数组:
array(
'a' => 'ā',
'i' => 'ī',
'u' => 'ū',
'e' => 'ē',
'o' => 'ō'
)
键被 $keys
引用:['a', 'i', 'u', 'e', 'o']
。
$pattern = '/([' . implode('', $keys) . '])ー/u';
Imploding 没有分隔符的键允许生成匹配任何元音(y 除外)后跟 U+30FC Unicode 的结果模式 '/([aiueo])ー/u'
Unicode 字符串中的字符(称为 片假名-平假名延音标记 )。
替换元音
return preg_replace_callback($pattern, function($matches) use ($parameters) {
return $parameters['macrons'][$matches[1]];
}, $str);
对于每个匹配的元音,preg_replace_callback 调用匿名函数作为第二个参数传递给它匹配的元音。此回调的结果替换结果字符串中匹配的元音(由 preg_replace_callback 返回)。
回调只是 returns $parameters['macrons']
关联数组中匹配元音索引的值。
因此,元音被相应的 chōonpu 替换了!