Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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_String_Utf 8 - Fatal编程技术网

在PHP中检测非字母语言字符串

在PHP中检测非字母语言字符串,php,regex,string,utf-8,Php,Regex,String,Utf 8,我有一个类似的问题 然而,我有一个不那么严格的要求 我只需要检测输入字符串是否包含任何非字母字符串 如果它确实包含非字母字符串,那么我将选择一个不同的字体文件 如果它只包含字母字符串,那么我将选择类似AmericanTypeWriter的字体文件 按字母字符串,包括各种可能的符号,如逗号、标点符号等。 很难定义字母字符串 让我来定义什么是非字母字符串的示例 这是中文 并假设字符串为utf-8格式 另一种定义方式:任何不属于非欧洲语言字符的内容都自动假定为字母字符串。 顺便说一下,我需要在php中

我有一个类似的问题

然而,我有一个不那么严格的要求

我只需要检测输入字符串是否包含任何非字母字符串

如果它确实包含非字母字符串,那么我将选择一个不同的字体文件

如果它只包含字母字符串,那么我将选择类似AmericanTypeWriter的字体文件

按字母字符串,包括各种可能的符号,如逗号、标点符号等。

很难定义字母字符串

让我来定义什么是非字母字符串的示例

这是中文

并假设字符串为utf-8格式

另一种定义方式:任何不属于非欧洲语言字符的内容都自动假定为字母字符串。

顺便说一下,我需要在php中执行此检测。

使用
ctype\u alnum(string)
。文档此函数接收字符串并返回一个
bool
,告诉您该字符串是否包含其他字符

您还可以使用更复杂的正则表达式,它可以工作并检查空格。以下几点应该行得通


preg_match(“/^[a-zA-Z0-9]*$/u,$string)==1
就行了。

我找到了一个更好的答案。灵感来自


“字母”比
[:alpha::
正则表达式类中包含的更多吗?这是什么:alpha正则表达式类?@Joey:POSIX正则表达式函数(ereg*)是,但我不相信POSIX字符类是;它们在PCRE(preg*)中也得到了充分的支持。@Kimsia:哦,这不太好,因为我可能有空间。此函数仅测试字母数字,不包括空格键,因为它没有清楚地说明。通常的标点符号,如逗号和感叹号,都属于AmericanTypeWriter字体,所以字母字符串也包括在内。基于您对正则表达式的使用,我所需要做的就是添加标点符号。我说得对吗?preg\u match(“^[a-zA-Z0-9,\.\-\\.]*$”,$string)=1是,如果对您有帮助,请接受答案。我已对答案投了赞成票。我可能会编辑一下答案,并在php应用程序中试用后接受它。同时,谢谢@secretformula
header('Content-Type: text/html; charset=utf-8');
mb_internal_encoding('utf-8');

function isThisChineseText($text) {
    return preg_match("/\p{Han}+/u", $text);
}