【发布时间】:2014-05-26 17:09:16
【问题描述】:
我正在尝试从此段落中获取内容,但是当我从段落中删除线闸时,我正在使用的正则表达式不起作用,然后正则表达式起作用,否则它不起作用,请告诉我该怎么办?
这是一段:
<span class="st">My Paragraph - you can download free <b>drivers</b> for audio, video, chipset, Wi
Fi or USB, or a <b>driver</b> installation pack for <b>notebook</b>/(for ...</span><br></div>
我的正则表达式:
preg_match_all('/<span class="st">(.+?[^\n])<\/span><br><\/div>/i', $file_strings, $ti);
当我使用这一段时,它会起作用
<span class="st">My Paragraph - you can download free <b>drivers</b> for audio, video, chipset, WiFi or USB, or a <b>driver</b> installation pack for <b>notebook</b>/(for ...</span><br></div>
输出应该是这样的
My Paragraph - you can download free <b>drivers</b> for audio, video, chipset, WFi or USB, or a <b>driver</b> installation pack for <b>notebook</b>/(for ...
如您所见,我刚刚从 wifi 中移除了线路制动器,它正在工作,但我需要正则表达式,它可以在不移除线路制动器的情况下工作
查看此屏幕截图,我正在测试我的正则表达式 Screenshot我在这里测试 Regex tester
解决方案: @jonny-5
在正斜杠后添加 iS 而不是 i 解决了问题
preg_match_all('/<span class="st">(.+?[^\n])<\/span><br><\/div>/is', $file_strings, $ti);
【问题讨论】:
-
@user3675088 它完全是重复的。您正尝试像那个人一样使用正则表达式解析 HTML。解决方案也是一样的:不要。使用 XML 和/或 HTML 解析器来解析 HTML。
-
@user3675088 您在问题中的代码是 HTML。您正在尝试解析它。用正则表达式。故事结束。
-
要使点也匹配换行符,需要使用
s(PCRE_DOTALL) modifier。将其放在开头(?is)<span...或结束分隔符之后的模式中:.../is -
感谢@Jonny5 一切正常
标签: regex html-parsing