我正在尝试从以下字符串中获取一些特定值:
{"car":"Toyota"{"car":"honda"{"car":"BMW{"car":"Hyundai"
我希望得到'Toyota
'。该字符串是随机生成的,因此可以是Benz
或Pontiac
。
答案 0 :(得分: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 )
...如果相反,这只是一个可怕的类型而且应该是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 ) )
<强>文档强>
preg_replace
- http://php.net/manual/en/function.preg-replace.php array_filter
- http://php.net/manual/en/function.array-filter.php explode
- http://php.net/manual/en/function.explode.php json_decode
- http://php.net/manual/en/function.json-decode.php 答案 1 :(得分:1)
虽然这看起来像是一个腐败的JSON,但我会说你可以用爆炸()获得第一辆车。
$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,所以也许你想修复这个字符串的构造。 :)
编辑:代码中的拼写错误,如第一条评论所述。