2012-02-07 3 views
0

파일에서 TITLE 및 LINKS 읽는 방법을 모두 얻으려면 어떻게해야합니까?PHP의 테이블 행 내용 가져 오기/필터링

내가

을 시도

<tr class="odd"> 
<td align="left" valign="top" class="text_cont_normal"> TITLE </td> 
<td align="left" valign="top" class="normal_text_link"> 
    <img border="0" onclick="javascript:window.location.href='LINK'" style="cursor: pointer;" alt="Download" src="btn.jpg"/></td> 
</tr> 
<tr class="even"> 
<td align="left" valign="top" class="text_cont_normal"> TITLE2 </td> 
<td align="left" valign="top" class="normal_text_link"> 
    <img border="0" onclick="javascript:window.location.href='LINK2'" style="cursor: pointer;" alt="Download" src="btn.jpg"/></td> 
</tr> 

아래 파일의 샘플 내용

$tags = $doc->getElementsByTagName('img'); 
foreach ($tags as $tag) { 
if ($tag->hasAttribute('onclick')) 
    echo $tag->getAttribute('onclick').'<br>'; 
} 

하지만 실제로 원하는 데이터를받지!

+1

내가 어떤 제목이 표시되지 않습니다. 왜 그냥 HTML 앵커를 사용할 수 없습니까? – ngen

+0

태그 내에 을 포함 할 수 있습니다.이 태그는 javascript onclick 함수 대신 사용할 수 있습니다. – saji89

+0

@ saji89 문제를 바꾸는 것은 해결책이 아닙니다. ( – Sourav

답변

1
예를

$doc = new DOMDocument(); 
$doc->loadHTMLFile($filename); 
$xpath = new DOMXPath($doc); 
$nodes = $xpath->query('//td[@class="text_cont_normal"]'); 
foreach($nodes as $node) 
{ 
    echo $node->nodeValue.'<br>'; // title 
} 
$nodes = $xpath->query('//td[@class="normal_text_link"]/img[@alt="Download"]'); 
foreach($nodes as $node) 
{ 
    if ($node->hasAttribute('onclick')) 
    echo $node->getAttribute('onclick').'<br>'; //click 
} 

에 대해이 같이

, 당신은 정확히 LINK 다음

if ($node->hasAttribute('onclick')) 
    { 
     echo $node->getAttribute('onclick').'<br>'; //click 
     preg_match('/location\.href=(\'|")(.*?)\\1/i', 
       $node->getAttribute('onclick'), $matches); 
     if (isset($matches[2])) echo $matches[2].'<br>'; // the value 
    } 

를 다시 작성할 필요가 아니면 그룹에서 그들을해야하는 경우?

1

한 가지 가능한 방법 :

$nodes = $doc->getElementsByTagName('tr'); 
$max = $nodes->length; 
for ($i = 0; $i < $max; $i++) 
{ 
    echo $nodes->item($i)->firstChild->nodeValue . '<br>'; // TITLE 
    $onclick = $nodes->item($i)->childNodes->item(2)->childNodes->item(1)->getAttribute('onclick'); 
    $parts = explode("'", $onclick); 
    echo $parts[1] . '<br>'; // LINK 
}