【发布时间】:2018-04-08 12:38:53
【问题描述】:
这个问题被问了很多次,但我发现的 sn-ps 效果不好。我对正则表达式的经验较少,因此希望您能帮助我。
我想按限制获取段落。 我知道我可以通过 preg_match_all 来限制我的结果。
我有两个挣扎:
- 段落由 html 编辑器“创建”,因此有时会附加属性
- 如果可能的话,我也想要
<p>,但只得到文本也很好
例如:
<p>Paragraph 1</p>
<p attribute="value">Paragraph 2</p>
当我限制一个时,我只想要第一段,但限制 2 也应该返回第 2 段,即使它包含属性。
我尝试了什么:
function GetParagraph($content, $limitParagraph = 1)
{
preg_match_all('~(<p>(.+?)</p>){' . (int)$limitParagraph. '}~i', $sHTML, $aMatches);
return $aMatches[0];
}
'~(<p(.*?)>(.+?)</p>){' . (int)$limitParagraph. '}~i' 的正则表达式也不能正常工作
【问题讨论】:
-
您应该考虑阅读 this,然后再将太多资源提交到基于正则表达式的 HTML 解析器中。
-
我知道这一点,但是让我更简单地返回两个不带标签的段落:-)
-
这称为解析。不要使用正则表达式来解析 HTML 文档。请改用 DOM 解析器。
标签: php regex preg-match-all