테스트 사이트 - 개발 중인 베타 버전입니다

파싱 해서 가져오는 방법 질문입니다. 채택완료

스니음 1년 전 조회 2,052

{
    "success": true,
    "start": 0,
    "limit": 20,
    "total": 99,
    "posts": [
        {
            "idx": 1,
            "bid": "notice",
            "title": "테스트 공지",
        },
        {
            "idx": 2,
            "bid": "free",
            "title": "aaaaa",
        },
        {
            "idx": 44,
            "bid": "qna",
            "title": "what?",
        }
    ]
}

 

요런 html로 정보를 받고 있습니다.

 

include "simple_html_dom.php";

 

이걸 써서 파싱을 하라고 하는데 

 

예를 들어 notice 의 글만 가져 올려고 하면 어떻게 해야 할까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
스니음1
1년 전

$dom = new simple_html_dom();
$dom->load($html);

foreach ($dom->find('div[title]') as $post) {
    $title = $post->plaintext;
    echo "Title: $title\n";
}
$dom->clear();

 

스스로 찾아서 했습니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

R
1년 전

</p>

<p>$tmp_data = '';</p>

<p>$url = "URL주소";</p>

<p>$tmp_data = file_get_contents_curl($url);</p>

<p>$tmp_data = json_decode($tmp_data);</p>

<p>$data = array();</p>

<p>foreach($tmp_data['posts'] as $k => $v){</p>

<p>    if($v['bid'] == 'notice') $data[] = $v;</p>

<p>}</p>

<p>print_r($data);</p>

<p>

대략 이정도 일듯 하네요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

스니음
1년 전
답변감사합니다. 근데 이렇게 하면
Array ( )
이렇게만 화면에 나옵니다.

댓글을 작성하려면 로그인이 필요합니다.

1년 전

simple_html_dom.php 의 소스가 있어야 사용방법을 알수 있습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

wodud3073
1년 전

api로 거르는게 아니면 notice만 나온 페이지의 데이터부분 받는곳은 크롬 개발자도구로 열어서

 

그쪽 url로 들어가시면 notice만 나옵니다. 그게 없다면 안됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

스니음
1년 전
그럼 걍 순서대로만 이라도 타이틀을 화면에 나오게 하려면 어떻게 해야 하나요?
w
wodud3073
1년 전
받아온 변수를 json_decode(변수명,true) 하시면 배열처럼 사용 가능합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인