3

PHP を使用して HTML ドキュメント内の特定の要素の値を取得する方法を知っている人はいるでしょうか? 私が今行っていることはfile_get_contents、別の Web サイトから HTML コードを取得するために使用しており、その Web サイトにはテキストエリアがあります。

<textarea id="body" name="body" rows="12" cols="75" tabindex="1">Hello World!</textarea>

私がやりたいのは、スクリプトに実行させfile_get_contentsて、「Hello World!」を引き出すことです。テキストエリアから。それは可能ですか?皆さんを悩ませて申し訳ありません、もう一度、あなたはそのような有益なアドバイスをします:]。

4

2 に答える 2

7

ご迷惑をおかけして申し訳ありません。これは良い質問です。喜んでお答えします。PHP Simple HTML DOM Parserを使用して、必要なものを取得できます。

$html     = file_get_html('http://www.domain.com/');
$textarea = $html->find('textarea[id=body]'); 
$contents = $textarea->innertext;

echo $contents; // Outputs 'Hello World!'

を使用する場合はfile_get_contents()、次のようにします。

$raw_html = file_get_contents('http://www.domain.com/');
$html     = str_get_html($raw_html);
...

メソッドを使用して元の完全な HTML を取得file_get_contents()できるため、必要はありませんが、どこかで必要な場合は次のようにします。outertext

$html     = file_get_html('http://www.domain.com/');
$raw_html = $html->outertext;

キックのために、ワンライナーの正規表現でもこれを行うことができます:

preg_match('~<textarea id="body".*?>(.*?)</textarea>~', file_get_contents('http://www.domain.com/'), $matches);
echo $matches[1][0]; // Outputs 'Hello World!'

ただし、この正規表現を壊す可能性のあるコード変更に対してはるかに脆弱であるため、これに反対することを強くお勧めします。

于 2010-02-21T20:57:24.617 に答える
2

PHPのDOMおよびDOMXPathクラスを使用することをお勧めします。

$dom = DOMDocument::loadHTMLFile( $url );
$xpath = new DOMXPath( $dom );
$nodes = $xpath->query('//textarea[id=body]' )

$result = array();
for( $nodes as $node ) {
    $result[] = $node->textContent;
}

idbody$resultを持つすべてのtextareaの値が含まれます。

于 2010-02-21T21:03:40.283 に答える