【发布时间】:2015-09-29 11:45:10
【问题描述】:
我正在编写一个用大写字母分割字符串(餐厅菜单)的脚本。不幸的是,在捷克语中,一些单词以带有变音符号的特殊字符开头。用“普通”大写字母分割菜肴效果很好,但我的正则表达式对某些特殊字符不区分大小写,它用例如分割字符串。 š 什么时候应该只用 Š 拆分它。奇怪的是,一些特殊字符工作得很好,到目前为止唯一有问题的字母是š/Š。 谁能帮帮我?
$dishes = preg_split('/(?=[ABCDEFGHIJKLMNOPQRSTUVWXYZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽĹÔÄËÏÖÜŸ])/', $dishes);
print_r($dishes);
以上代码返回
Array
(
[0] =>
[1] => Vepřová plec na paprice s těstovinami
[2] => Domácí sekaná s bramborovou ka
[3] => ší
[4] => Těstoviny s rajským jablkem, olivami a žervé
[5] => Domácí sekaná s e svíčkovou omáčkou
[6] => Uzená kýta s čočkou na kyselo a vejcem
[7] => Vepřové nudličky se zeleninou a rýží
[8] => Pečená vepřová plec na medu a pivu s bramborami
[9] => Plzeňský gulá
[10] => š
[11] => Hovězí zadní se svíčkovou omáčkou, citron, brusinky,
[12] => šlehačka
)
(不要介意第一个空行) 谢谢!
【问题讨论】:
-
你应该使用
/u修饰符。试试$dishes = preg_split('/(?=[ABCDEFGHIJKLMNOPQRSTUVWXYZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽĹÔÄËÏÖÜŸ])/u', $dishes);。 -
如果你使用 '\u0160' 而不是 'Š' 是否有效?
-
使其通用:
preg_split('/(?=\p{Lu})/u', $dishes); -
@LucasTrzesniewski:如果目标是只匹配特定的字母,那么
\p{Lu}可能会过度匹配。 -
我想让它通用,不幸的是你的代码 (Lucas) 根本没有拆分它。添加 /u 也无济于事