答案 0 :(得分:6)
要几乎完全复制粘贴其他帖子的答案,您可以使用preg_match
:
$foundNonEnglishCharacter = false;
foreach ($words as $word) {
if (preg_match('/[^\00-\255]/', $word)) {
$foundNonEnglishCharacter = true;
break;
}
}
var_dump($foundNonEnglishCharacter); //If true, there's a non-english character somewhere - if not, then there's no english characters.
正则表达式尸检:
[^\00-\255]
- 不是在ASCII值0到255范围内的任何字符(因此,如果匹配, 包含字符外这个范围)
您可以找到常规0-255 ascii值及其在asciitable.com上的含义
答案 1 :(得分:0)
是。有可能的。
使用Remove Non English Characters PHP。
$strNew = preg_replace('/[^\00-\255]+/u', '', $str);
if($strNew == $str) {
// all english
} else {
// non-english character
}
答案 2 :(得分:0)
在我suggested in a comment here时,您可以使用带有回调函数的array_filter()
来返回非英语单词。请注意,这使用h2ooooooo's answer中提供的正则表达式:
$result = array_filter($array, function($word) {
return preg_match('/[^\00-\255]/', $word);
});
现在,$result
将是一个包含所有非英语单词的数组。如果您要检查您的数组是否包含任何其中包含非英文字符的字词,那么您可以使用{{3}检查$result
数组中的元素数量}:
if (count($result) > 0) {
// at least a word containing non-English characters
// found in the array
}