1

我正在尝试从以下字符串中获取一些特定值:

{"car":"Toyota"{"car":"honda"{"car":"BMW{"car":"Hyundai" 

我想摆脱' Toyota'。该字符串是随机生成的,因此它可能是BenzPontiac

4

2 回答 2

2

不太确定这个疯狂的字符串是从哪里来的,但如果你准确地显示了格式,这将提取你所追求的字符串:

$string = '{"car":"Toyota"{"car":"honda"{"car":"BMW{"car":"Hyundai"';
$string = array_filter(
    explode(',', 
        preg_replace(
            array('/"/', '/{/', '/:/', '"car"'),
            array('', ',',  '', ''),
            $string
        )
    )
);
print_r($string);
// Output: Array ( [1] => Toyota [2] => honda [3] => BMW [4] => Hyundai ) 

...如果相反,这只是一个可怕的 typeo 并且应该是 JSON,请使用json_decode

$string = '[{"car":"Toyota"},{"car":"honda"},{"car":"BMW"},{"car":"Hyundai"}]'; // <-- valid JSON
$data = json_decode($string, true);
print_r($data);
// Output: Array ( [0] => Array ( [car] => Toyota ) [1] => Array ( [car] => honda ) [2] => Array ( [car] => BMW ) [3] => Array ( [car] => Hyundai ) ) 

文档

于 2012-08-03T19:26:27.567 回答
1

虽然这看起来像是一段损坏的 JSON,但我想说你可以使用explode() 获得第一辆车。

$string = '{"car":"Toyota"{"car":"honda"{"car":"BMW{"car":"Hyundai"';
$string = explode("{", $string);
$firstcar = $string[1]; //your string starts with {, so $string[0] would be empty
$firstcar = explode(":", $firstcar);
$caryouarelookingfor = $firstcar[1]; // [0] would be 'car', [1] will be 'Toyota'
echo $caryouarelookingfor // output: "Toyota"

但是,正如评论中也提到的,该字符串看起来像是一段损坏的 JSON,所以也许您想修复这个字符串的构造。:)

编辑:代码中的错字,如第一条评论所述。

于 2012-08-03T19:31:19.617 回答