是否可以检查数组中的单词是否包含非英语字符

时间:2013-12-18 12:37:16

标签: php

我正在关注此链接Remove Non English Characters PHP

但我仍然想知道是否可以检查数组中的单词是否包含非英语字符。如果是啊?

谢谢!

3 个答案:

答案 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
}