如何在PHP中的特定字符之间获取动态字符串值

时间:2018-07-03 09:40:17

标签: php

我是PHP的新手,所以我搜索并阅读了很多文章,但是在这里或其他地方找不到任何解决方案。我的问题是我有一个像这样的动态字符串

[{"NAME":"jennifer lopez"},{"Name":"Ricky Martin"}]

[{"NAME":"Tom and Jerry"},{"Name":"Donald Duck"},{"Name":"Rick And Morty"}]

它总是在变化,所以我只想取像这样的名字;珍妮佛·洛佩兹(Jennifer lopez)瑞奇·马丁(Ricky Martin)或汤姆(Tom)和杰里·唐纳德·达克(Jerry Donald Duck Rick And Morty)。我尝试过

 $pos = strpos($newarray,":")+2;
 $pos1 = strpos($newarray,"}")-1;
 $pos2 = $pos1-$pos;

但是它只返回詹妮弗·洛佩兹。

2 个答案:

答案 0 :(得分:0)

如果JSON字符串中的键(Name/NAME/name)始终更改,则可以使用以下代码访问名称。

$x = json_decode('[{"NAME":"jennifer lopez"},{"Name":"Ricky Martin"}]', true);
$names = [];
foreach ($x as $value) {
    $names[] = array_values($value)[0];
}

print_r($names);

答案 1 :(得分:0)

您发布的字符串似乎是JSON格式的字符串。如果它是JSON格式的字符串,则可以使用json_decode($inputString)方法来获取对象数组。

此外,JSON字符串中的键与您发布的键不同。如果尝试使用“名称”或“名称”直接访问属性,PHP将报告错误/警告。因此,您可以将stdClass对象转换为array并获取第一个元素值。代码如下:

$inputString = '[{"NAME":"Tom and Jerry"},{"Name":"Donald Duck"},{"Name":"Rick And Morty"}]';

foreach(json_decode($inputString) as $nameObj) {
    $nameArr = (array) $nameObj;
    echo reset($nameArr);
}