如何使用 PHP 检查单词是日语还是英语

发布于 2024-09-02 03:36:49 字数 196 浏览 5 评论 0原文

我想在此功能中对英语单词和日语单词进行不同的处理,

function process_word($word) {
   if($word is english) {
     /////////
   }else if($word is japanese) {
      ////////
   }
}

谢谢

I want to have different process for English word and Japanese word in this function

function process_word($word) {
   if($word is english) {
     /////////
   }else if($word is japanese) {
      ////////
   }
}

thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

拥抱没勇气 2024-09-09 03:36:49

不需要 mb_string 扩展的快速解决方案:

if (strlen($str) != strlen(utf8_decode($str))) {
    // $str uses multi-byte chars (isn't English)
}

else {
    // $str is ASCII (probably English)
}

或者修改 @Alexander Konstantinov提供的解决方案:

function isKanji($str) {
    return preg_match('/[\x{4E00}-\x{9FBF}]/u', $str) > 0;
}

function isHiragana($str) {
    return preg_match('/[\x{3040}-\x{309F}]/u', $str) > 0;
}

function isKatakana($str) {
    return preg_match('/[\x{30A0}-\x{30FF}]/u', $str) > 0;
}

function isJapanese($str) {
    return isKanji($str) || isHiragana($str) || isKatakana($str);
}

A quick solution that doesn't need the mb_string extension:

if (strlen($str) != strlen(utf8_decode($str))) {
    // $str uses multi-byte chars (isn't English)
}

else {
    // $str is ASCII (probably English)
}

Or a modification of the solution provided by @Alexander Konstantinov:

function isKanji($str) {
    return preg_match('/[\x{4E00}-\x{9FBF}]/u', $str) > 0;
}

function isHiragana($str) {
    return preg_match('/[\x{3040}-\x{309F}]/u', $str) > 0;
}

function isKatakana($str) {
    return preg_match('/[\x{30A0}-\x{30FF}]/u', $str) > 0;
}

function isJapanese($str) {
    return isKanji($str) || isHiragana($str) || isKatakana($str);
}
悲欢浪云 2024-09-09 03:36:49

此函数检查一个单词是否至少包含一个日语字母(我在 Wikipedia)。

function isJapanese($word) {
    return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $word);
}

This function checks whether a word contains at least one Japanese letter (I found unicode range for Japanese letters in Wikipedia).

function isJapanese($word) {
    return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $word);
}
沧桑㈠ 2024-09-09 03:36:49

你可以尝试一下Google的翻译API,它有一个检测功能:
http://code.google.com/apis/语言/翻译/v2/using_rest.html#检测语言

You could try Google's Translation API that has a detection function:
http://code.google.com/apis/language/translate/v2/using_rest.html#detect-language

§对你不离不弃 2024-09-09 03:36:49

如果编码是 EUC-,请尝试使用 mb_detect_encoding 函数JP 或 UTF-8 / UTF-16 可以是日语,否则是英语。
如果您能确保每种语言采用哪种编码,那就更好了,因为 UTF 编码可用于多种语言

Try with mb_detect_encoding function, if encoding is EUC-JP or UTF-8 / UTF-16 it can be japanese, otherwise english.
The better is if you can ensure which encoding each language, as UTF encodings can be used for many languages

少钕鈤記 2024-09-09 03:36:49

英文文本通常仅包含 ASCII 字符(或者更好的说法是 ASCII 范围内的字符)。

English text usually consists only of ASCII characters (or better say, characters in ASCII range).

谈情不如逗狗 2024-09-09 03:36:49

您可以尝试转换字符集并检查是否成功。

看看 iconv: http://www.php.net/manual/ en/function.iconv.php

如果您可以将字符串转换为 ISO-8859-1,它可能是英语,如果您可以转换为 iso-2022-jp,它可能是日语(我可能对确切的错误)字符集,你应该用谷歌搜索它们)。

You can try to convert the charset and check if it succeeds.

Take a look at iconv: http://www.php.net/manual/en/function.iconv.php

If you can convert a string to ISO-8859-1 it might be english, if you can convert to iso-2022-jp it is propably japanese (I might be wrong for the exact charsets, you should google for them).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文