1

次の文字列から特定の値を取得しようとしています。

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

私はそれから ' ' を取得したいToyota. 文字列はランダムに生成されるため、BenzまたはPontiac.

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 ) 

...代わりに、これが単なるひどいタイプであり、これが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 に答える