簡體   English   中英

PHP preg_match html 中的多個標簽

[英]PHP preg_match multiple tags in html

我需要用多個標簽分割我的 html。 <h1>標記的開頭到但不包括以下<h1>標記。 到目前為止,我的表達方式有效,但只檢索第一部分。 專門尋找preg_match解決方案。 理想情況下希望解決方案是動態的(無論 h1 標簽之間的內容或有多少部分)。 讓我知道(一般來說,對正則表達式來說有點新)。 我知道這可能是一個棘手的問題,因為我通常是 php 的新手。

html

<h1>heading1</h1>
<img>
<p>para1</p>
<p>para2</p>
<h1>heading2</h1>
<img>
<p>para1</p>
<p>para2</p>
<h1>heading3</h1>
<img>
<p>para1</p>
<p>para2</p>

所需的 output 或類似的東西:

array{
  [0]=> <h1>heading1</h1>
        <img>
        <p>para1</p>
        <p>para2</p>

  [1]=> <h1>heading2</h1>
        <img>
        <p>para1</p>
        <p>para2</p>

  [2]=> <h1>heading3</h1>
        <img>
        <p>para1</p>
        <p>para2</p>
}

我現在的表達是:

$regex = '#<\/p>\s*(<h2>.*?)<h2>#s';
$preg = preg_match_all($regex, $content, $matches);
print_r ($matches);

非常感謝您的幫助!

preg_match_all()不會返回重疊匹配。 由於您的正則表達式以<h2>結尾,這是下一場比賽的開始,因此它不會返回下一場比賽。

將下一場比賽的開始放入前瞻中,使其不包括在比賽中。

$regex = '#<\/p>\s*(<h1>.*?)(?=<h1>)#s';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM