0

我正在尝试解析一个字符串,将其拆分为不是字母或数字的内容

$parse_query_arguments = preg_split("/[^a-z0-9]+/i", 'København');

并构造一个mysql查询。即使我跳过 preg_split 并尝试直接输入字符串,它也会将其分成 2 个不同的字符串,“K”和“benhavn”。

我该如何处理这些问题?

4

2 回答 2

2

如果您使用的是文字字符,a-z那么它将与重音字符不匹配。您可能希望使用各种可用的字符类来进行更通用的匹配:

/[[:alpha:][:digit]]/

[:alpha:]集合的范围比a-z. 记住字符匹配是基于字符代码完成的,并且a-z从字面上看,字符之间az索引之间的字符。像这样的字符ø位于此范围之外,即使它们按字母顺序位于该范围之间。

计算机以 ASCII-abetical(UNICODEical?)顺序工作。

于 2013-08-22T14:28:35.913 回答
1

这可能有助于解释您的正则表达式中发生了什么... Regex 和 Unicode

你可以尝试像这个问题\p{L}中解释的那样

于 2013-08-22T14:10:51.847 回答