PHP 检测非英文

9
我使用以下代码来检查一个字符串是否为英文。
我使用以下代码来检查一个字符串是否为英文。
<?php
    $string="で書くタッチイベント (フ";

    if(!preg_match('/[^\W_ ] /',$string)) {
        echo "Please enter English words only:(";
    } else {
        echo "OK, English Detected!";
    }
?>

由于像"some english text で書くタッチイベント (フ"这样的字符串也被检测为英语,因此它无法提供完美的结果,你有什么想法吗?


定义“英语”。对于仅包含字母的情况,平凡的/^[a-zA-Z]*$/只会匹配“英语”。 - Jon
你是指“真正的英语”还是指“包含拉丁字母比汉字/假名多的英语”? - Rup
3个回答

36

尝试这个(请注意您需要安装mbstring php模块):

<?php
    $string="で書くタッチイベント (フ";

    if(strlen($string) != mb_strlen($string, 'utf-8'))
    { 
        echo "Please enter English words only:(";
    }
    else {
        echo "OK, English Detected!";
    }
?>

1
似乎不起作用... http://ideone.com/obm95F - Hiren Pandya
抱歉,mb_strlen 中缺少 utf-8 编码。现在应该可以工作了。 - Edson Medina
完美!做得好! - Hiren Pandya
2
无论如何,这是每个程序员都必须阅读的内容:http://kunststube.net/encoding/ - Edson Medina
谢谢…很好地使用了UTF-8 :) - Jessica Lingmn
显示剩余2条评论

0

1
这个回答是否有任何不是从其他问题复制粘贴的内容? - Jon
为什么你们要踩他的评论?这是绝对正确的... - Chris
@Chris 我没有给你的回答点踩,但是评论不应该作为答案发布。另外,如果 Hiren 认为这个问题已经在其他地方得到了解答,那么他/她应该将 OP 标记为重复。 - Boaz
已经给予礼貌...我有一些文章,所以分享代码更大。 - Hiren Pandya
我没有执行所提到的操作的特权。 - Hiren Pandya
显示剩余6条评论

0
if(!preg_match('/[^\w ]/u',$string))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接