我需要将所有西里尔字母替换为"[]“括号之间的拉丁文等价物。下面是一个例子:
Приметимо да
формула (\ref{ј5121}) обухвата
и случајеве а) и б).
Заиста, из (\ref{ј5121}), за $x_1=x_2$
добија се:
\[
|АБ|=\sqrt{(y_2-у_1)^2}=|y_2-п_1|,
\]
а из (\ref{ј5121}), за $y_1=y_2$:
\[
|AЦ|=\sqrt{(м_2-х_1)^2}=|н_2-x_1|.
\]
Стога се формула (\ref{ј5121}) може
применити на било које
двe тачке, без обзира
на њихов положај.我用下面的代码隔离了方括号之间的内容:$pattern =“/[(^)*]/”;preg_match_all($pattern,$string,$output);
但我不能让它用拉丁文取代西里尔字母:\任何帮助都是受欢迎的。谢谢!
发布于 2014-01-16 01:22:21
你可以用这个:
$data = <<<'LOD'
Приметимо да
формула (\ref{ј5121}) обухвата
и случајеве а) и б).
Заиста, из (\ref{ј5121}), за $x_1=x_2$
добија се:
\[
|АБ|=\sqrt{(y_2-у_1)^2}=|y_2-п_1|,
\]
а из (\ref{ј5121}), за $y_1=y_2$:
\[
|AЦ|=\sqrt{(м_2-х_1)^2}=|н_2-x_1|.
\]
LOD;
$pattern = '~(?<=\[)[^]]++(?=])~u';
$result = preg_replace_callback($pattern, function ($m) {
$cyrillic2latin = array(
'A'=>'A', 'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E',
'Ё'=>'YO', 'Ж'=>'ZH', 'З'=>'Z', 'И'=>'I', 'Й'=>'J', 'К'=>'K',
'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Х'=>'H', 'Ц'=>'TS',
'Ч'=>'CH', 'Ш'=>'SH', 'Щ'=>'SHCH', 'Ъ'=>'\'', 'Э'=>'E', 'Ю'=>'YU',
'Я'=>'YA');
return strtr($m[0], $cyrillic2latin);
}, $data);
print_r($result);请随时更正,并添加小写字母!
如果使用PHPPH5.4.0,则可以将>=函数更改为:
$result = preg_replace_callback($pattern, function ($m) {
return transliterator_transliterate("Cyrillic-Latin", $m[0]);
}, $data);https://stackoverflow.com/questions/21150522
复制相似问题