8

我正在使用这些代码来检查字符串是否为英文。

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

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

它不能提供完美的结果,因为这样的字符串"some english text で書くタッチイベント (フ"也被检测为英语,知道吗?

4

3 回答 3

34

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

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

    if(strlen($string) != mb_strlen($string, 'utf-8'))
    { 
        echo "Please enter English words only:(";
    }
    else {
        echo "OK, English Detected!";
    }
?>
于 2013-04-10T09:06:24.297 回答
0
if(!preg_match('/[^\w ]/u',$string))
于 2013-04-10T09:10:39.490 回答
0

您无法从字符类型中检测到语言。并且没有万无一失的方法可以做到这一点。

使用任何方法,您都只是在进行有根据的猜测。来自:从 PHP 中的字符串中检测语言

尽管下面的一些文章可能会派上用场,以防万一。

http://papermashup.com/php-language-detection/

https://github.com/BruceJillis/PHP-Language-Detection

http://phpir.com/language-detection-with-n-grams/

希望能帮助到你..

于 2013-04-10T09:00:45.243 回答