尽管我试图只获取
的内容<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;
答案 0 :(得分:2)
您应该使用non-greedy匹配。将(.*)
更改为(.*?)
。
另外,尽可能避免使用正则表达式来解析HTML。
答案 1 :(得分:0)
这是另一种方法,表示当你想使用PHP DOMDocument类在PHP中获取/读取HTML元素时。
<?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的文档。