3

こんにちは、私の質問を見ていただきありがとうございます。HTML スニペットからデータを取得する必要があります。このソースは信頼できる/構造化されたものなので、この HTML で正規表現を使用しても問題ないと思います。php の Dom やその他の高度な機能はやり過ぎだと思います。

HTML スニペットの形式は次のとおりです。

<div id="d-container">
  <div id="row-custom_1">
     <div class="label">Type</div>
     <div class="content">John Smith</div>
     <div class="clear"></div>
  </div>
</div>

上記では、最初の 2 つの DIV タグに ID が設定されていることに注意してください。div タグのような複数の row-custom_1 がある可能性があるため、それらをエスケープする必要があります。

私は実際には正規表現が非常に苦手なので、上記の HTML スニペットから John Smith を取得するための助けを期待しています。

それは次のようなものかもしれません

<div * id="row-custom_1" * > * <div * class="content" * >GRAB THIS </div>

しかし、正規表現でそれを行う方法がわかりません。ジョン・スミスの部分には、確かに html は含まれません。すべてのhtmlを取り除き、データを上記の形式で提供するのは、信頼できるソースからのものです。

いずれにせよ、正規表現が HTML を処理するのに決して良い考えではないことは理解できます。何卒よろしくお願い申し上げます。

30 分後に編集: 素晴らしい人々の多くが HTML パーサーの使用を提案したので、私はそれを実行しました。魅力のように働きました。したがって、愚かな質問の作成者として、誰かが同様の質問を持ってここに来たら、仕事にDOMを使用することをお勧めします。

4

1 に答える 1

5

以下は、指定された HTML から値を取得するための単純な DOM ベースのコードです。

$html = <<< EOF
<div id="d-container">
  <div id="row-custom_1">
     <div class="label">Type</div>
     <div class="content">John Smith</div>
     <div class="clear"></div>
  </div>
</div>
EOF;
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html); // loads your html
$xpath = new DOMXPath($doc);
$value = $xpath->evaluate("string(//div[@id='d-container']
         /div[@id='row-custom_1']/div[@class='content']/text())"); 
echo "User Name: [$value]\n"; // prints your user name

出力:

User Name: [John Smith]
于 2012-04-27T13:50:45.120 に答える