0

のコンテンツのみを取得しようとしていますが、

<div class="description">...</div> 

この特定のdivの下にあるすべてを返します。その間のコンテンツのみを取得するにはどうすればよいですか?

$file_string = file_get_contents('');

preg_match('/<div class="description">(.*)<\/div>/si', $file_string, $description);
$description_out = $description[1];

echo $description_out;
4

2 に答える 2

2

非貪欲なマッチングを使用する必要があります。を に変更(.*)(.*?)ます。

また、可能であれば、HTML を解析するために正規表現を使用しないようにしてください。

于 2012-07-31T14:49:11.423 に答える
0

PHP DOMDocument クラスを使用して、PHP で HTML 要素を取得 /read する場合に示される別の方法を次に示します。

<?php
// string with HTML content
$strhtml = '<!doctype html>
<html>
<head>
 <meta charset="utf-8" />
 <title>Document Title</title>
</head>
<body>
 <div id="dv1">www.MarPlo.net</div>
 <div class="description">http://www.coursesweb.net</div>
</body></html>';

// create the DOMDocument object, and load HTML from a string
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);

// gets all DIVs
$divs = $dochtml->getElementsByTagName('div');

// traverse the object with all DIVs
foreach($divs as $div) {
  // if the current $div has class="description", gets and outputs content
  if($div->hasAttribute('class') && $div->getAttribute('class') == 'description') {
    $cnt = $div->nodeValue;
    echo $cnt. '<br/>';
  }
}
?>

php.net で DOMDocument に関するドキュメントを見つけることができます。

于 2012-07-31T15:04:47.827 に答える