如何获取HTML标签的内容?

And*_*son 6 html php regex html-parsing

嘿所以我想做的就是抓住第一段的内容.该字符串$blog_post包含以下格式的许多段落:

<p>Paragraph 1</p><p>Paragraph 2</p><p>Paragraph 3</p>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我正在写一个正则表达式来抓取第一个<p>标签和第一个结束</p>标签之间的所有内容.然而,它抓住了第一个<p>标签和最后一个结束</p>标签,这导致我抓住了一切.

这是我目前的代码:

if (preg_match("/[\\s]*<p>[\\s]*(?<firstparagraph>[\\s\\S]+)[\\s]*<\\/p>[\\s\\S]*/",$blog_post,$blog_paragraph))
   echo "<p>" . $blog_paragraph["firstparagraph"] . "</p>";
else
  echo $blog_post;
Run Code Online (Sandbox Code Playgroud)

Kib*_*bee 18

那么,假设段落中没有其他html,sysrqb将允许您匹配第一段中的任何内容.你可能想要更像这样的东西

<p>.*?</p>
Run Code Online (Sandbox Code Playgroud)

放置?*使其变得非贪婪,这意味着在匹配之前它只会匹配必要的文本</p>.


Eri*_*ebo 6

如果您使用preg_match,请使用"U"标志使其不贪婪.

preg_match("/<p>(.*)<\/p>/U", $blog_post, &$matches);
Run Code Online (Sandbox Code Playgroud)

$matches[1] 然后将包含第一段.