Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多语言数字字符算字母吗?_Php_Regex_Utf 8 - Fatal编程技术网

Php 多语言数字字符算字母吗?

Php 多语言数字字符算字母吗?,php,regex,utf-8,Php,Regex,Utf 8,我正在尝试搜索其他语言中的字母和空格(简单单词),如果我找到数字或标点符号,就会抛出一个检测异常。当测试我用在维基百科上找到的UTF-8数字字符编写的正则表达式时,我的结果总是匹配的,我很困惑为什么,除非它认为所有数字都是字母 以下是我尝试过的角色: 5或伍 5或 代码如下: $were_bad_characters_found = preg_match('/[^\p{L}\p{Zs}]+/us', $data); 它问的问题的答案总是,不,没有发现坏角色 从文档上看,这似乎是可行的,

我正在尝试搜索其他语言中的字母和空格(简单单词),如果我找到数字或标点符号,就会抛出一个检测异常。当测试我用在维基百科上找到的UTF-8数字字符编写的正则表达式时,我的结果总是匹配的,我很困惑为什么,除非它认为所有数字都是字母

以下是我尝试过的角色:

5或伍

5或

代码如下:

$were_bad_characters_found = preg_match('/[^\p{L}\p{Zs}]+/us',  $data); 
它问的问题的答案总是,不,没有发现坏角色


从文档上看,这似乎是可行的,事实上,当我试着用简单的英文数字通过它时,它确实可行,但一旦多语言字符出现,它就会滚到我身上。我在这方面有很多变体,用于检测不同的常见场景,所有utf8正则表达式代码似乎只适用于英语字符。思想?

你展示的人物是字母

  • ,不是数字,具有非数字解释

  • 不是一个数字,但也不接近任何类型的数字解释


把它变成一个数字而不是一个字母。在PHP中,您可以使用
\p{Nd}
来匹配数字。但是您的正则表达式工作正常。

谢谢您的快速回复。你能提供一些不是字母的数字吗?维基把我引入歧途。如果没有可测试的工作数据,我很难测试这段代码。@JeffreyGilbert查看此xml文件中的数字属性,并使用这些字符进行测试