Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中,使用正则表达式从字符串中选择html标记的一部分_Php_Regex_Dom_Search - Fatal编程技术网

在php中,使用正则表达式从字符串中选择html标记的一部分

在php中,使用正则表达式从字符串中选择html标记的一部分,php,regex,dom,search,Php,Regex,Dom,Search,我想在php中选择div标记中的字符串。我计划用正则表达式来实现它。但是有更好的办法吗 像这样:你好,你好吗?。请代我向艾伦问好。 我想检索div标签中的所有文本,如: "<div>how are you?</div>" "<div>send my regards</div>" “你好吗?” “代我问候” 我可以知道怎么做吗 我计划用正则表达式来实现它 不,不要那样做。具体原因 但是有更好的办法吗 是的,为此使用DOM解析器。。 $html='

我想在php中选择div标记中的字符串。我计划用正则表达式来实现它。但是有更好的办法吗

像这样:
你好,你好吗?。请代我向艾伦问好。

我想检索div标签中的所有文本,如:

"<div>how are you?</div>"
"<div>send my regards</div>"
“你好吗?”
“代我问候”
我可以知道怎么做吗

我计划用正则表达式来实现它

不,不要那样做。具体原因 但是有更好的办法吗

是的,为此使用
DOM解析器。。
$html='你好,你好吗?。请代我向艾伦问好。”;
$dom=新的DOMDocument;
$dom->loadHTML($html);
$divText='';
foreach($dom->getElementsByTagName('div')作为$tag){
$divText.=$dom->saveHTML($tag);
}
回显文本;

Better将div另存为HTML(保持转义)$divText.=$tag->ownerDocument->saveHtml($tag)的可能重复项;是的,但是DomDocument几乎和regex一样糟糕。那么你有什么建议呢?我在运行上面的代码时遇到了这个错误。警告:DOMDocument::saveHTML()需要0个参数,1个参数在/home/…中给出。DOMDocument::saveHTML()的$node参数是在PHP5.3.6中添加的。看起来你的PHP太旧了。DOMDocument::saveXml()也应该可以工作。
$html='Hello there <div>how are you?</div>. Please <div>send my regards</div> to Allan.';
$dom = new DOMDocument;
$dom->loadHTML($html);
$divText='';
foreach ($dom->getElementsByTagName('div') as $tag) {
      $divText.=$dom->saveHTML($tag);
}
echo $divText;