<form
をサイトから入手したいと思います。この状況のフォーム部分の間には、まだ他のhtmlコードがありません。どのようにそれらを削除するには?私はどのように正規のPHPとサイトからの部分を使用する方法を意味する?PHP正規表現の問題
$str = file_get_contents('http://bingphp.codeplex.com');
preg_match_all('~<form.+</form>~iUs', $str, $match);
var_dump($match);
<form
をサイトから入手したいと思います。この状況のフォーム部分の間には、まだ他のhtmlコードがありません。どのようにそれらを削除するには?私はどのように正規のPHPとサイトからの部分を使用する方法を意味する?PHP正規表現の問題
$str = file_get_contents('http://bingphp.codeplex.com');
preg_match_all('~<form.+</form>~iUs', $str, $match);
var_dump($match);
HTMLコンテンツの抽出に正規表現を使用しないでください。 DOM parserを使用してください。
など。
$doc = new DOMDocument();
$doc->loadHTMLFile("http://bingphp.codeplex.com");
$forms = $doc->getElementsByTagName('form');
更新:あなたが(あなたがいることを意味している場合かわからない)フォームを削除する場合:
for($i = $forms.length;$i--;) {
$node = $forms->item($i);
$node->parentNode->removeChild($node);
}
がアップデート2:
私はちょうど彼らがを持っていることに気づきました1つのフォームは全身の内容をラップします。そういうわけで、あなたは実際にページ全体を得るでしょう。
私が考えることができる最も良い方法は、PHPでSimple HTML DOMライブラリを使用して、DOMクエリを使用してHTMLページからフォームを取得することです。
simplexmlやdomdocumentのような組み込みのxmlパーサを使用するよりも少し便利です。
ここにthe libraryがあります。
正規表現の問題は、貪欲にあります。そのような場合は、.+?
をお勧めします。
しかし、@フェリックスは言った。正規表現はHTML のために実行可能ですが、しばしば特定のものを探すので、むしろそれを解析する必要があります。あなたがQueryPathを使用する場合にも非常に簡単です:
$str = file_get_contents('http://bingphp.codeplex.com');
print qp($str)->find("form")->html();
コードの一部はによって所定の位置に変更されると、通常は、HTMLを解析するDOMを使用する必要がありますが、この場合、ウェブサイトは非常に遠く、標準のHTMLであることからですjavascript。したがって、DOMオブジェクトにロードすることはできません。これは意図的なものであり、コードを難読化する方法です。
いずれにしても、あなたのRE(あまり貪欲でないマッチを使用すると助けになります)ではなく、自分が望むものを構文解析できないサイト自体のデザインです。
「削除する」とはどういう意味ですか?あなたは '