如何使用PHP搜索字符串中的日语字符?

时间:2019-06-08 15:28:01

标签: php

我有3个这样的字符串:

$str_1 = '「ハッスルの日」開催について';
$str_2 = 'Today is monday';
$str_3 = '(167スルの日日)';

我有一个供用户使用的输入框。如果该字符串包含文本用户输入,则将该字符串导出到CSV文件。例如-输入:今天-$ str_2将导出为新的CSV。

现在我有2个问题:

  1. 如果用户输入了日语括号“或日语字符,则我的程序找不到它。我从其他文本文件中读取了这些字符串,所以我不知道应该对用户输入进行编码还是需要对字符串进行编码。我尝试了两种方法,但对我来说仍然无法解决问题。

  2. 当我将日语字符回显到浏览器时,它显示为ok,但是当我导出为CSV时,它显示为:§µÂ„織åÂÂ。我应该怎么做才能使其正确导出?

1 个答案:

答案 0 :(得分:1)

我们可能会在此处使用正则表达式来检测我们的日语字符,我们可以从以下内容开始:

([\p{Katakana}\p{Hiragana}\p{Han}「」]+)

我们可以简单地将所需的任何其他字符添加到该字符类:

[\p{Katakana}\p{Hiragana}\p{Han}「」]

Demo

测试

$re = '/([\p{Katakana}\p{Hiragana}\p{Han}「」]+)/mu';
$str = '「ハッスルの日」開催について
Today is monday
167スルの日日';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

输出

array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(42) "「ハッスルの日」開催について"
    [1]=>
    string(42) "「ハッスルの日」開催について"
  }
  [1]=>
  array(2) {
    [0]=>
    string(15) "スルの日日"
    [1]=>
    string(15) "スルの日日"
  }
}

我们还可以使用参考文献中列出的日语unicode保存/检索我们的数据。

参考

Regular Expressions for Japanese Text