2013-04-10 40 views
6

Tôi đang sử dụng mã này để kiểm tra xem chuỗi có bằng tiếng Anh hay không.PHP Phát hiện nếu không phải là tiếng Anh

<?php 
$string="で書くタッチイベント (フ"; 
if(!preg_match('/[^\W_ ] /',$string)) 
{ 
echo "Please enter English words only:("; 
} 
else { 
echo "OK, English Detected!"; 
} 
?> 

Nó không thể cung cấp kết quả hoàn hảo vì chuỗi như "some english text で書くタッチイベント (フ" điều này cũng phát hiện như tiếng Anh, ý tưởng nào?

+0

Xác định "tiếng Anh". Đối với các chữ cái chỉ nhỏ hơn '/^[a-zA-Z] * $ /' sẽ chỉ khớp với "tiếng anh". – Jon

+0

Bạn có nghĩa là 'tiếng Anh thực sự' hay ý bạn là 'chứa nhiều ký tự La tinh hơn kanji/kana'? – Rup

Trả lời

17

Hãy thử điều này (xin lưu ý rằng bạn cần cài đặt mô-đun mbstring php):

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

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

Có vẻ không đang hoạt động ... http://ideone.com/obm95F –

+0

Xin lỗi, nó thiếu mã hóa utf-8 trong mb_strlen. Nên làm việc ngay bây giờ. –

+0

Hoàn hảo ... Làm việc tốt ... –

0

Bạn không thể phát hiện ngôn ngữ từ loại ký tự. Và không có cách nào dễ dàng để làm điều này.

Với bất kỳ phương pháp nào, bạn chỉ đang thực hiện một phỏng đoán được giáo dục. Từ: Detect language from string in PHP

Mặc dù một số trong những điều dưới đây có thể được tiện dụng trong trường hợp ..

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

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

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

Hy vọng nó giúp ..

+1

Câu trả lời này có nói bất cứ điều gì không được sao chép/dán từ câu hỏi khác không? – Jon

+0

Tại sao các bạn downvote ý kiến ​​của mình? Nó hoàn toàn đúng ... – Chris

+0

@ Chris Tôi đã không downvote, nhưng ý kiến ​​không nên được đăng như là câu trả lời. Ngoài ra, nếu Hiren tin rằng câu hỏi này đã được trả lời ở nơi khác, hơn anh/cô ấy nên đánh dấu OP là trùng lặp. – Boaz

0
if(!preg_match('/[^\w ]/u',$string)) 
Các vấn đề liên quan