3

preg_match2番目の試合をしようとしています。

<?php
$url = "http://domain.com";
preg_match('~<table([^>]*)(class\\s*=\\s*["\']ladder-table["\'])([^>]*)>(.*?)</table>~i', file_get_contents($url), $match);
print $match[0];    
?>

これが私が見つけようとしているテーブルです:

<table class="ladder-table">Content</table>
<table class="ladder-table">Content</table> <-- [This one]
<table class="ladder-table">Content</table>

最後の2つのテーブルは、Javaスクリプトコードによって非表示になっています。パターンに影響はありますか?

4

1 に答える 1

3

正規表現を引き続き使用する場合は、preg_match_allを使用してください。

$url = "http://domain.com";
preg_match_all('~<table([^>]*)(class\\s*=\\s*["\']ladder-table["\'])([^>]*)>(.*?)</table>~i', file_get_contents($url), $match);
print_r($match[0][1]);

これはあなたの要件には十分かもしれません。ただし、HTMLへの変更を処理するのに十分な堅牢性を備えたコードを作成することは困難です。たとえば、修飾子なしでContentチェックしているため、新しい行がある場合、上記は一致しません。.*?PCRE_DOTALL

これを処理する正しい方法は、DOMなどの適切なHTMLパーサーを使用することです

于 2013-01-29T00:16:44.953 に答える