2

HTML を DOMCrawler でフィルタリングしようとしていますが、結果が見つかった場合は中断する必要があります。

からの離脱は可能eachですか?
または、$node->text();使用するとどうすれば取得できますforeachか?それとも無理ですか?

HTML:

<table cellspacing="0" cellpadding="0" align="Center" rules="all" border="1">
    <tbody>
    <tr>
        <td>Entity Name</td>
        <td>NV Business ID</td>
        <td>Status</td>
        <td>Type</td>
    </tr>
    <tr>
        <td><a href="">GOOGLE</a></td>
        <td><a href=""></a></td>
        <td><a href="">Expired</a></td>
        <td><a href="">Reserved Name</a></td>
    </tr>
    <tr>
        <td><a href="">GOOGLE INC.</a></td>
        <td><a href="">NV20161275322</a></td>
        <td><a href="">Active</a></td>
        <td><a href="">Foreign Corporation</a>
        </td>
    </tr>
    </tbody>
</table>

PHP:

$client = new Client();
$client->setHeader('User-Agent', "Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.15");
$crawler = $client->request('GET', 'http://nvsos.gov/sosentitysearch/');
$form = $crawler->selectButton('Search')->form();
$crawler = $client->submit($form, array(
    'ctl00$MainContent$txtSearchBox' => 'google',
));
if($this->available == false)return;
$crawler->filter('table tr')->each(function (\Symfony\Component\DomCrawler\Crawler $element) {
    $status = $element->filter('td')->eq(2)->text();
    echo $status;
    if ($status == 'Active') {
        $this->available = false;
        break;
    }
});

ステータスを取得したい。そして、ステータスが「アクティブ」に等しい場合、ループを破りたいです。


わかりました、今私は何かを思いつきました。

$crawler = $crawler->filter('#ctl00_MainContent_objSearchGrid_dgCorpSearchResults');
foreach ($crawler as $i => $content) {
    $crawler = new Crawler($content);
    foreach ($crawler->filter('#ctl00_MainContent_objSearchGrid_dgCorpSearchResults') as $node) {
        $longStatus = $node->nodeValue;
        echo $longStatus;
    }
}

しかし、今は 3 位になる方法がわかりませ<td><tr>

4

1 に答える 1