2012-08-03 36 views
1

我試圖得到一些特定的值了以下字符串:如何從中得到字符串?

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

我想「Toyota」出來的那個。該字符串是隨機生成的,因此它可能是BenzPontiac

+2

你想獲得第一輛車?還是所有的汽車? – 2012-08-03 19:15:05

+7

這應該是一些腐敗的JSON? – Daniel 2012-08-03 19:15:36

+1

這幾乎是JSON。它最初是否是JSON?如果是這樣,它是否已損壞,你是否做了一些替換,或者你是否錯誤地將問題輸入錯了? – 2012-08-03 19:15:42

回答

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) 

...如果,相反,這是隻是一個可怕的類型0,這應該是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)) 

文檔

+0

非常感謝!!!!!!!!!!! – FlyingCat 2012-08-03 19:51:56

+0

@chris:不需要時preg_replace。我相信你的目標是找到與衆不同的東西,但在這個代碼塊中它是多餘的。 – hakre 2012-08-03 21:52:04

+0

這甚至意味着什麼?多餘的,而不是幾次調用'str_replace',或其他一些易碎的爆炸集合?它完成這項工作,沒有理由*不使用它。我不知道任何最佳實踐指導方針,表明一個人應該保守'preg_replace'以支持其他方法... source? – 2012-08-03 22:51:18

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的,所以也許你要修復這個字符串的建設。 :)

編輯:代碼中的錯字,如第一評論中所述。

+0

這種方法非常脆弱,輸出是「豐田」(注意引號)。 – 2012-08-03 19:34:13