1

正規表現を使用した関数は次のとおりです。

preg_match_all('|<span class=\"Menu1\">(.*?)</td>|U',$contents,$wynik2);

以下で動作します:

  <tr>
        <td width="30%" ><span class="Menu"> Nazwa zawdsdu: </td>
        <td width="70%"> <span class="Menu1">PRACOWNIK BARU  </td>
        </tr>

しかし、それは動作しません:

<td width="70%"> <span class="Menu1">PRACA W MC DONALDS PRACE PORZĄDKOWE, PRZYJĘCIE DOSTAWY
WYMAGANA KSIĄŻECZKA SANEPIDOWSKA, CHĘCI DO PRACY
KONTAKT TEL. 794295401 </td>

空の配列があります。「改行」が原因だと思います。どうすれば修正できますか?

4

2 に答える 2

3

申し訳ありませんが、DOMDocument の例を示す義務があると感じました。

$d = new DOMDocument;
$d->loadHTML($html);

$xpath = new DOMXPath($d);

foreach ($xpath->query('//span[@class="Menu1"]') as $node) {
    echo $node->nodeValue, PHP_EOL;
}

スクレーパーに適用 (URL と投稿フィールドを編集)

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://redacted');
curl_setopt($ch, CURLOPT_POSTFIELDS, 'redacted');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$d = new DOMDocument;
libxml_use_internal_errors(true);

$d->loadHTML(curl_exec($ch));
libxml_clear_errors();

$xpath = new DOMXPath($d);

foreach ($xpath->query('//span[@class="Menu1"]') as $node) {
    echo $node->nodeValue, PHP_EOL;
}
于 2012-05-31T14:23:23.283 に答える
2

s正規表現の末尾に修飾子を追加します。

于 2012-05-31T14:16:40.080 に答える