繁体   English   中英

PHP preg_match在两个HTML标记之间获取文本

[英]PHP preg_match to grab text in between two HTML tags

我正在尝试使用preg_match来抓取两个HTML标记之间的文本。

这是我的代码的简化版本:

 $sPattern = "/<li class=\"sample\">(.*?)<\/li>/s";
 $sText = "blah blah blah <li class=\"sample\">hello world!</li> blah blah blah";
 preg_match($sPattern,$sText,$aMatch);
 echo '<pre>'.print_r($aMatch).'</pre>';

但是,当我运行此代码时,我得到了完整的HTML字符串:

<li class=\"sample\">hello world!</li>

有谁知道我需要对正则表达式进行哪些更改?

注意:我知道其他方法可以解析HTML页面中的数据。 由于各种原因,不能选择DOMDocument和DOMXPath -我坚持使用RegEx。

这应该可以按照您想要的方式工作:

$sPattern = "/<li class=\"sample\">(.*?)<\/li>/s";
$sText = "blah blah blah <li class=\"sample\">hello world!</li> blah blah blah";
preg_match($sPattern,$sText,$aMatch);
echo '<pre>'.$aMatch[1].'</pre>';

您需要访问捕获组输出。

var_dump( $aMatch[1]);

这是一个演示正则表达式工作正常的演示 ,您只是错误地访问了结果数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM