0

これを使用して、class="job" を使用して、このテーブル内のすべての td からコンテンツを取得しています。

$table01 = $salary->find('table.table01');
$rows = $table01[0]->find('td.job');

それから私はこれを使ってそれを出力していますが、明らかにそれをプレーンテキストとして出力するだけなので、もう少しやる必要があります...

foreach($table01[0]->find('td.job') as $element) {
$jobs .= $element->plaintext . '<br />';
}

最終的には、この形式で出力したいと考えています。a href がジョブ名を使用し、スペースと / を - に置き換えていることに注意してください。

<tr>
  <td class="small"> <a href="/graphic-artist-designer">Graphic Artist / Designer</a>
    $23,755 – $55,335  </td>
</tr>
<tr>
  <td class="small"> <a href="/sales-associate">Sales Associate</a><br />
    $15,577 – $56,290  </td>
</tr>
<tr>
  <td class="small"> <a href="/film-video-editor">Film / Video Editor</a><br />
    $24,184 – $94,493  </td>
</tr>

Heres テーブル im スクレイピング

<table cellpadding="0" cellspacing="0" border="0" class="table01">

<tr>
    <td class="head">Test</td>
    <td class="job">
    <a href="/Graphic_Artist_%2f_Designer" id="UniqueID1">Graphic Artist / Designer</a><br/>
    $23,755 – $55,335
    </td>
</tr>

<tr>
    <td class="head">Test</td>
    <td class="job">
    <a href="/Sales_Associate" id="UniqueID2">Sales Associate</a><br/>
    $15,577 – $56,290
    </td>
</tr>

<tr>
    <td class="head">Test</td>
    <td class="job">
    <a href="/Film_%2f_Video_Editor" id="UniqueID3">Film / Video Editor</a><br/>
    $24,184 – $94,493
    </td>
</tr>

</table>
4

1 に答える 1

0

正規表現を使用する方が良いかもしれません

<?php
$html=file_get_contents('1.html');
$jobs='';
if(preg_match_all("/<tr>.*?<td.*?>.*?<\/td>.*?<td\sclass=\"job\">.*?<a.+?href=\"(.+?)\".+?>(.*?)<\/a>(.*?)<\/td>.*?<\/tr>/ims", $html, $res))
{
  foreach($res[1] as $i=>$uri)
  {
    $uri=strtolower(urldecode($uri));
    $uri=preg_replace("/_\/_/",'-',$uri);
    $uri=preg_replace("/_/",'-',$uri);
    $jobs.='<tr><td class="small"> <a href="'.$uri.'">'.$res[2][$i].'</a>'.$res[3][$i].'</td></tr>'."\n";
  }
}
echo $jobs;
于 2013-02-08T11:50:32.277 に答える