파싱된 html에서 필요한 요소를 정확히 구분해서 출력하려고 합니다.
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.2 |
로또 1등 당첨 판매점 화면을 파싱해서 사용하려고 합니다.
https://dhlottery.co.kr/store.do?method=topStore&pageGubun=L645
위 페이지 입니다.
foreach($html->find('table[class=tbl_data tbl_data_col]',0)->find('td') as $element){
echo $element->innertext . '<br>';
}
일단 이렇게 출력을 해봤는데요.
1
인터넷 복권판매사이트
자동
동행복권(dhlottery.co.kr)
지도보기
2
진우복권
자동
부산 연제구 월드컵대로 119 204호(연산동)
지도보기
마지막 "지도보기" 는 사실 버려질 것입니다.
1,인테넷 복권판매 사이트,자동,동행복권
4개의 아이템을 각각의 변수에 담아서 사용하고 싶습니다.
일단 각각 다른 이름의 변수에 배열식으로 담기게 하고 싶습니다.
이후에 해당 변수를 출력하려구요.
$number, $address, $type, $store_name
위 각각 자신의 변수에 들어가게 해서 사용하게 순서대로 순환이되면서 담기게 하고 싶습니다.
버려질 것도 일단 담아 놓는 것이 편하다면
$number, $address, $type, $store_name , $loc 이렇게 사용해도 될 것 같습니다.
댓글 6
각 매장별로 데이터를 나눠 담으셔야 할 것 같으니..
td 를 찾아 루프를 바로 돌리지 마시고,
tr 을 찾아 루프를 돌린 뒤, 각 tr 마다 td 를 찾으셔서, 변수에 담으셔요.
$data = [];
foreach($html->find('table~~')->find('tr') as $tr){
$tds = $tr->find('td');
$data[] = [
'number' => $tds[0]->innertext,
'store_name' => $tds[1]->innertext,
~~~~~~~
];
}
해서 $data 안에 매장 순서대로 들어가구요.
$data[0]['store_name'] 은 첫번째 매장의 이름인걸로.
$data[1]['store_name'] 이렇게 해야 첫번째게 나오네요. 어찌되었던 나오니 ㅋㅋ
어려운 관문은 통과한 것 같습니다.
도움 정말 감사합니다.
이제 이 데이터를 출력을 잘 해주고...
다음 과정은 주소로 카카오 지도를 띄우는 거 시도 해보겠습니다.
php 에서 직접 작성하려니 처음 해보는거라 잘 안되네요.
<?php
foreach($data as $key => $val) {
?>
<tr>
<td ><span><?php echo $val[$key]->number; ?></span></td>
<td ><span><?php echo $val[$key]->store_name; ?></span></td>
<td><span><?php echo $val[$key]->type; ?></span></td>
<td><span><?php echo $val[$key]->adress; ?></span></td>
<td><span></span></td>
</tr>
<?php
}
?>
제가 뭘 잘못하고 있는거죠???
$val[$key] 말고 $val 로 사용하시구요. ($val 은 $data[$key], $val[$key] 는 $data[$key][$key])
->number 말고 ['number'] 으로 사용해 보세요. (위에서 배열 형식으로 저장하였으니, ['number']. ->number 은 오브젝트(stdClass) 형식.)
$val['number'] 처럼요.
늦은 시간 너무 감사합니다. 처음 하는거라 무턱대고 시도하니 당연히 엉뚱하게 하고 있네요.
완전하게 마무리 되었습니다!!!
지도는 다음 시간에 해보겠습니다.