신개자
633
2019-10-14 12:03:27 작성 2019-10-14 12:30:21 수정됨
5
641

php로 json의 데이터를 추출하려합니다


json의 데이터가 예를들어

"AAA - mart-label {0} " : "안녕하세요, HI, 인사",

"BBB - mart-label {0} " : "잘가요, bye, 잘가",

"CCC - mart-label {0} " : "누구세요, who, 누구",

"hhh - super-label {0} " : "어디에요, where누구",

"ttt - super-label {0} " : "어떻게요, how누구",

이런식으로 데이터가 있을때

글씨를 굵게 한 부분만 꺼내오려고합니다(mart-label{0}있는 부분만!)

"AAA"는 키값으로, "안녕하세, HI" 는 데이터로 넣으려고합니다

방법이 있을까요???

그냥 mart-label을 지울수도있을거같긴한데 이 데이터만있는게 아니라

다른 데이터로 여러개있어서 딱 저 부분만 뽑아오려고합니다!

0
0
  • 답변 5

  • memememery
    206
    2019-10-14 12:10:02

    저런 데이터 유형을 배열이나 객체로 만든뒤 

    json_encode, json_decode

    이 함수만 써주면 간단히 끝납니다. json <-> array 전환이 가능합니다.

    php는 json을 상당히 유연하게 컨트롤 할 수 있습니다  

    0
  • 신개자
    633
    2019-10-14 12:25:09 작성 2019-10-14 12:27:36 수정됨

    저는 "AAA - mart-label {0} " : "안녕하세요, HI, 인사", 중에서

    AAA를 키값으로, "안녕하세요, HI"를 데이터로 넣고싶은건데

    어떻게 하라는 말씀이신건지 잘 모르겠습니다..,..

    0
  • Mr.KKu
    54
    2019-10-14 13:01:03 작성 2019-10-14 13:05:07 수정됨

    안녕하세요 이제 PHP 6개월된 개발자 KKu 입니다.


    음 .. 도움이 되실지 모르겠지만 한번 문제 해결을 위해 생각해본 결과입니다. 

    json 데이터를 php 에서 지원해주는 json_decode , encode 함수를 이용 . (자세한내용은 검색을 통해 좋은 설명을 보시면 될 것 같습니다. )

    문자열을 잘라와서 key 값을  담은 새로운 배열을 만든다던지 재정의 하여 사용하시면 될 듯 합니다.


    $test = array("AAA"=>"안녕하세요, HI, 인사");

    // json date 
    $jsondata = '{
       "AAA - mart-label {0} " : "안녕하세요, HI, 인사",
       "BBB - mart-label {0} " : "잘가요, bye, 잘가",
       "CCC - mart-label {0} " : "누구세요, who, 누구",
       "hhh - super-label {0} " : "어디에요, where, 누구",
       "ttt - super-label {0} " : "어떻게요, how, 누구"
    }';

    var_dump($jsondata);

    echo "<br/>";

    $data_object = json_decode($jsondata); //object 변황
    echo "<br/>";
    $data_array = json_decode($jsondatatrue); // array 변환 
    echo "<br/>";
    echo "참조 : https://mytory.net/archives/40";
    echo "<br/>";
    foreach ($data_object as $key => $value) {
       // 키값을 추출하였으니 문자열을 추출해서 새로운 배열에 키값을 다시 넣거나 변경해주시면 될 것 같습니다 
       // 혹은 배열 키값 재정의 방법을 찾아서 적용 해주시면 될 것 같습니다. 
       echo $key;
       echo $value;
    }


    // 재정의 방법 예시
    $arrayarray('0'=>'a','1'=>'b','3'=>'c');

    $i = 0;

    foreach($array as $key=>$val){

    unset($array[$key]);

    $new_key = $i;

    $array[$new_key] = $val;



    $i++;

    }

    echo "출처: https://yeahvely.tistory.com/15 [나홀로 쿠킹]";
    0
  • Dive_Drink_Develope
    4k
    2019-10-14 13:08:12 작성 2019-10-14 13:13:16 수정됨

    memememery 님이 말씀하신대로 일단 json string을 json_decode($json_string, true);  를 사용해서 배열에 집어넣으시면


    AAA - mart-label {0} 가 key

    안녕하세요, HI, 인사 가 value가 됩니다.

    array_keys($json_decode_result_array); 를 이용해서 키를 추출하면 

    키는 explode(' - mart-label', $keys($i)); 를 이용해서 AAA를 추출하고

    밸류는 explode(',', $json_decode_result_array[$keys($i)]) 를 이용해서 토크나이징 한뒤에 

    $token_result[0].','.$token_result[1] 

    를 하면 얻으실 수 있겠네요.


    수정 : 오 위에 쓰신것처럼 foreach쓰시는게 더 간단하겠네요.





    0
  • 신개자
    633
    2019-10-16 14:07:38

    감사합니다

    알려주신데로 했더니 바로 해결했습니다!ㅎㅎ

    너무신나서 다음꺼하느랴 답글을못달았네요 ㅠㅠ

    감사합니다!!ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.