我有像
这样的字符串<li class="video_description"><strong>Description:</strong> hello world, This is test description.</li>
我想要字符串,“你好世界,这是测试说明。”每次该字符串都是动态的。
那么,我怎么能在这里使用preg_match选项呢?
答案 0 :(得分:4)
使用正则表达式解析PHP中的html并不是一个好主意。
我建议使用simple_html_dom因为它很简单并且适合您的情况
答案 1 :(得分:1)
关于使用正则表达式解析html的所有免责声明,如果你想要一个正则表达式,你可以使用它:
>\s*\K(?:(?!<).)+(?=</li)
在 Regex Demo 中查看匹配项。
示例PHP代码
$regex = '~>\s*\K(?:(?!<).)+(?=</li)~';
preg_match_all($regex, $yourstring, $matches);
print_r($matches[0]);
<强>解释强>
>\s*
匹配结束>
和可选空格\K
告诉引擎放弃与其返回的最终匹配项目匹配的内容(?:(?!<).)+
匹配任何未启动标记的字符(?=</li)
声称接下来是</li
答案 2 :(得分:0)
另一种解决方案
<li.*<\/strong>\s?(.*)<\/li>
用法:
$string = '<li class="video_description"><strong>Description:</strong> hello world, This is test description.</li>';
$pattern = '/<li.*<\/strong>\s?(.*)<\/li>/';
if(preg_match($pattern, $string)){
echo "Macth was found";
}