2012-08-03 21 views
1

나는 다음과 같은 문자열에서 일부 특정 값을 얻기 위해 노력하고 있어요 :문자열을 가져 오는 방법은 무엇입니까?

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

내가 그 중 'Toyota을'싶어. 문자열은 임의로 생성되므로 Benz 또는 Pontiac이 될 수 있습니다.

+2

첫 번째 자동차를 사고 싶습니까? 아니면 모든 차? –

+7

JSON이 손상 되었습니까? – Daniel

+1

거의 JSON입니다. 원래 JSON입니까? 그렇다면 손상되었거나 교체를 했습니까? 아니면 질문에 예를 잘못 입력 했습니까? –

답변

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)) 

문서

+0

고마워요 !!!!!!!!!!! – FlyingCat

+0

@chris : 필요하지 않은 경우 preg_replace. 처음부터 다른 것을 목표로 삼았 겠지만, 코드 덩어리에서는 불필요한 부분입니다. – hakre

+0

그게 무슨 뜻 이죠? 불필요한,'str_replace'에 대한 호출이나 다른 깨지기 쉬운 콜렉션에 반대되는 것이 있습니까? 그것은 일을합니다. 사용하지 않을 이유가 없습니다. 나는 다른 방법들에 찬성하여'preg_replace'를 보수해야한다고 제안하는 모범 사례 지침을 모르고 있습니다 ... 출처? –

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

이 방법은 매우 약해서 출력은''Toyota ''입니다 (따옴표에 유의하십시오). –

관련 문제