<div class="begin">...</div>
如何匹配PHP中的HTML(包括)<div class="begin">
?正则表达式问题在PHP
我需要一个正则表达式解决方案可以处理嵌套的情况下。
<div class="begin">...</div>
如何匹配PHP中的HTML(包括)<div class="begin">
?正则表达式问题在PHP
我需要一个正则表达式解决方案可以处理嵌套的情况下。
This总结起来不错。
总之,不要使用正则表达式来解析HTML。相反,看看DOM类,特别是DOMDocument::loadHTML
我想用正则表达式 – user198729 2010-01-07 10:01:16
不,你真的真的真的没有。 – 2010-01-07 10:02:15
@unknown(谷歌):为什么?为什么你会选择更容易出错的解决方案,而你可以使用类似karim79的内容? – 2010-01-07 10:12:38
// Create DOM from URL
$html = file_get_html('http://example.org/');
echo $html->find('div.begin', 0)->outertext;
这里是使用字符串方法
$str= <<<A
blah
<div class="begin">
blah blah
blah
blah blah </div>
blah
A;
$s = explode("</div>",$str);
foreach($s as $k=>$v){
$m=strpos($v,'<div class="begin">');
if($m !==FALSE){
echo substr("$v" ,$m);
}
}
输出
$ php test.php
<div class="begin">
blah blah
blah
blah blah
使用DOM和DOMXPath,而不是正则表达式的一种方式,你会感谢我的:
// something useful:
function dumpDomNode ($node) {
$temp = new DOMDocument();
$temp->appendChild($node,true);
return $temp->saveHTML();
}
$dom = new DOMDocument();
$dom->loadHTML($html_string);
$xpath-> new DOMXpath($dom);
$elements = $xpath->query("*/div/[@class='begin']");
foreach ($elements as $el) {
echo dumpDomNode($el); // <-- or do something more useful with it
}
用正则表达式的尝试,这将导致你的路径,疯狂......
这里是你的正则表达式:
preg_match('/<div class=\"begin\">.*<\/div>/simU', $string, $matches);
但是:
嗯,哦......你刚刚在一个问题中写了一些HTML,然后用'regex'标记它? (见http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – 2010-01-07 10:00:38
这里是扎尔戈,又名托尼小马。我们都是doooomed – gnud 2010-01-07 11:17:26