PHP正则表达式问题:如何在latin1_swedish_ci字符集中匹配none-ascii字母?

时间:2010-04-07 04:46:23

标签: php regex unicode

我有这个字符串:Verbesserungsvorschläge,我认为是德语。现在我想在php中使用正则表达式进行匹配。更一般地说,我希望匹配像ASCII这样的字符,这些字符在ASCII集合中不是100%。

感谢。

4 个答案:

答案 0 :(得分:2)

如果您使用的是8位字符集,则正则表达式[\x80-\xFF]匹配任何非ASCII字符。在PHP中将是:

if (preg_match('/[\x80-\xFF]/', $subject)) {
  # String has non-ASCII characters
} else {
  # String is pure ASCII or empty
}

答案 1 :(得分:1)

preg_match_all('~[^\x00-\x7F]~u', 'Verbesserungsvorschläge', $matches);

答案 2 :(得分:0)

这是一个受伤的世界,但您可以尝试使用十六进制值,如“/ Verbesserungsvorschl \ xc3ge /”中的简单扩展字符。

可以在表格中找到十六进制值,以便随时使用

确定
echo dechex( ord( ä ) ); 

对于完整的unicode,您可以使用/ u作为修饰符。请参阅http://www.php.net/manual/en/regexp.reference.unicode.php和其他页面。我的理解是unicode在PHP版本6中会更好。

答案 3 :(得分:0)

以下是字符http://www.unicode.org/charts/PDF/U0080.pdf的官方说明 您可以在哪里匹配ASCII字符