转换数字为重音拼音? [英] Convert numbered to accentuated Pinyin?
本文介绍了转换数字为重音拼音?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给出源文本,例如
nin2 hao3 ma
(这是写ASCII拼音的一种典型方法,没有适当的重音字符) 并给出了(UTF8)转换表,例如
(which is a typical way to write ASCII Pinyin, without proper accentuated characters) and given a (UTF8) conversion table like
a1;ā
e1;ē
i1;ī
o1;ō
u1;ū
ü1;ǖ
A1;Ā
E1;Ē
...
我如何将源文本转换为
nín hǎo ma
?
对于我使用PHP的价值而言,这可能是我正在研究的正则表达式?
For what it's worth I'm using PHP, and this might be a regex I'm looking into?
推荐答案
<?php
$in = 'nin2 hao3 ma';
$out = 'nín hǎo ma';
function replacer($match) {
static $trTable = array(
1 => array(
'a' => 'ā',
'e' => 'ē',
'i' => 'ī',
'o' => 'ō',
'u' => 'ū',
'ü' => 'ǖ',
'A' => 'Ā',
'E' => 'Ē'),
2 => array('i' => 'í'),
3 => array('a' => 'ǎ')
);
list(, $word, $i) = $match;
return str_replace(
array_keys($trTable[$i]),
array_values($trTable[$i]),
$word); }
// Outputs: bool(true)
var_dump(preg_replace_callback('~(\w+)(\d+)~', 'replacer', $in) === $out);
这篇关于转换数字为重音拼音?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文