我正在尝试使用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>';
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码时,我会返回完整的HTML字符串:
<li class=\"sample\">hello world!</li>
Run Code Online (Sandbox Code Playgroud)
有谁知道我需要对正则表达式做出哪些更改?
注意:我知道从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>';
Run Code Online (Sandbox Code Playgroud)