【问题标题】:get cyrillic words from json string in PHP?从 PHP 中的 json 字符串中获取西里尔字母?
【发布时间】:2016-08-29 08:06:18
【问题描述】:

从 PHP 中的 JSON 字符串中获取西里尔字母? JSON 字符串是非结构化的任何类型。

例子:

{"employees":[
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Вилен", "lastName":"Авангард"},
    {"firstName":"Станислав", "lastName":"Андрей"}
]}

输出:

Вилен Авангард Станислав Андрей

【问题讨论】:

  • 好的,现在你的问题是什么?你试图解决什么?您的问题不清楚,请编辑
  • 输出是你预期的输出吗?
  • 对不起。我的英文很差。我尝试了很多正则表达式但不起作用。我只需要所有西里尔语单词任何字符串。
  • JSON 是结构化的。
  • 谢谢大家。 "/(*UTF8)(?![A-Za-z]+)\p{Cyrillic}+/" 这是完美的作品。

标签: php regex utf-8


【解决方案1】:

如果您需要使用正则表达式,请检查online script here

一般用途:

您需要检查firstNamelastName 是否为英文,如果不是,则将它们存储在一个数组中,最后将它们内爆作为结果需求。

$json = '{"employees":[
            {"firstName":"John", "lastName":"Doe"},
            {"firstName":"John", "lastName":"Doe"},
            {"firstName":"Вилен", "lastName":"Авангард"},
            {"firstName":"Станислав", "lastName":"Андрей"}
        ]}';
$arr = json_decode($json, true);

$out = array();
foreach($arr['employees'] as $value){
    if(strlen($value['firstName']) != mb_strlen($value['firstName'], 'utf-8'))
        $out[] = $value['firstName'];
    if(strlen($value['lastName']) != mb_strlen($value['lastName'], 'utf-8'))
        $out[] = $value['lastName'];
}

echo implode(" ", $out); //Вилен Авангард Станислав Андрей

注意:你需要安装mbstring php模块。

【讨论】:

  • 谢谢。但 json 字符串是任何结构化的。上面的 json 只是一个例子。某些响应不包括名字、姓氏..等。
  • 非常感谢。 "/(*UTF8)(?![A-Za-z]+)\p{Cyrillic}+/" 这是完美的作品。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 2011-11-19
  • 1970-01-01
相关资源
最近更新 更多