2013-07-23 2 views
-5
<td class=bilgi_satir width="45%"><b>(PLACE I WANT TO FETCH) </b></td> 

(OTHER HTML TAGS) 

<td class=bilgi_satir width="25%"><b>(PLACE I WANT TO FETCH) </b></td> 

(OTHER HTML TAGS) 

<td class=bilgi_satir width="35%"><b>(PLACE I WANT TO FETCH) </b></td> 

(OTHER HTML TAGS) 

배열로 가져올 수있는 방법은 무엇입니까?PHP 사전 일치, 어떻게해야합니까?

폭 변수는 ... 정규 표현식을 가진 HTML 문제를 해결하기

+0

HTML 파서를 사용하십시오. – nickb

+0

@nick 나는 PHP에서 정말로 멍청하다. 예제를 보낼 수 있습니까? – 1342

+0

** 정규 표현식을 사용하여 HTML을 구문 분석하지 마십시오 **. 정규식으로 HTML을 안정적으로 구문 분석 할 수는 없으며 슬픔과 좌절을 당할 것입니다. HTML이 예상과 다르게 변경되면 코드가 손상됩니다. 이미 작성, 테스트 및 디버깅 된 PHP 모듈을 사용하여 HTML을 올바르게 구문 분석하는 방법에 대한 예제는 http://htmlparsing.com/php를 참조하십시오. –

답변

1

시도를 변화, 곧 두 가지 문제가있다. 그러나 더러운 정규 표현식으로이 작업을 실제로 수행하려는 경우 수행 할 수 있습니다. 당신은 그것에 의지해서는 안됩니다. 가장 간단한 정규식 뭔가 같다 :

preg_match_all(
    "/<td class=bilgi_satir width=\"..%\"><b>(.*)<\/b>/i", 
    $your_html_here, $m 
); 

이것은 당신이 print_r($m[1]);으로 원하는 것을 대략 반환이 함께 할 수

Array (
    [0] => (PLACE I WANT TO FETCH 1) 
    [1] => (PLACE I WANT TO FETCH 2) 
    [2] => (PLACE I WANT TO FETCH 3) 
) 

가장 좋은 방법은 (I는 1, 2, 3 떨어져 '그들에게 추가) DOM 파싱.

$doc = new DOMDocument(); 
$doc->loadHTML($your_html_here); 
$x = new DOMXPath($doc); 
$results = $x->query("//td[@class='bilgi_satir']//b"); 

# $results->length now shows 3 

$ret = array(); 
foreach($results as $count => $result) { 
    printf("item # %s = %s\n", $count, $result->nodeValue); # debug only 
    $ret[] = $result->nodeValue; 
} 

이 뜻을 표시 :

item # 0 = (PLACE I WANT TO FETCH 1) 
item # 1 = (PLACE I WANT TO FETCH 2) 
item # 2 = (PLACE I WANT TO FETCH 3) 

편집 : 예를 들어 분명히 배열에 노드 값을 덤핑하는 것은 당신이 원하는대로, 당신은 배열을 통해 액세스 할 수 있습니다.

+0

당신은 내 영웅입니다. 나는 두 번째 예를 정말 좋아했다. 정말 고마워요. – 1342