-3

I have a string having HTML tags and I would like to explode into arrays as like below

The tags I am considering to explode are : p, h1, h2, h3, h4, h5, <ul>, <ol>

Example:

$data ="<p> Paragraph 1 </p> <h2>h2 tag 1 </h2> <p> Paragraph 2.</p> <p>Paragraph 3 </p> <ol> <li>pizza</li> <li>burgers</li> <li>salad</li> </ol> <ul> <li> <ul> <li> One </li> <li>Twp </li> <li>Three</li> </ul> </li> </ul> <p> Paragraph 
 5 </p> <p>Paragraph 6:</p> <h4> h4 tag</h4> <h1> h4 tag</h1> <h4> h4 tag</h4>"

I need the following output:

$array_tags= [
 0 => <p> Paragraph 1 </p>,
 1 => <h2>h2 tag 1 </h2>,
 2 => <p> Paragraph 2 </p>,
 3 => <p> Paragraph 3 </p>,
 4 => <ol> <li>pizza</li> <li>burgers</li> <li>salad</li> </ol>,
 5 => <p> Paragraph 4 </p>,
 6 => <ul> <li> <ul> <li> One </li> <li>Twp </li> <li>Three</li> </ul> </li> </ul>,
 7 =>  <p> Paragraph 5 </p>,
 8 =>  <p> Paragraph 6 </p>,
 9 =>  <h4> h4 tag</h4>,
 10 => <h1> h1 tag</h1>,
];

Could someone please help here? Thanks in advance!

Nagesh
  • 121
  • 11
  • [Parsing HTML with regex is a hard job](https://stackoverflow.com/a/4234491/372239) – Toto Apr 21 '19 at 12:09

1 Answers1

0

You should be use split string into array.

$data ="<p> Paragraph 1 </p> <h2>h2 tag 1 </h2> <p> Paragraph 2.</p> <p>Paragraph 3 </p> <ol> <li>pizza</li> <li>burgers</li> <li>salad</li> </ol> <ul> <li> <ul> <li> One </li> <li>Twp </li> <li>Three</li> </ul> </li> </ul> <p> Paragraph 
 5 </p> <p>Paragraph 6:</p> <h4> h4 tag</h4> <h1> h4 tag</h1> <h4> h4 tag</h4>";

    preg_match_all('/<p>(.*?)<\/p>|<h1>(.*?)<\/h1>|<h2>(.*?)<\/h2>|<h3>(.*?)<\/h3>|<h4>(.*?)<\/h4>|<h5>(.*?)<\/h5>|<ul>(.*)<\/ul>|<ol>(.*?)<\/ol>/', $data, $matches);
    dd($matches[0]);

OUTPUT

  array:10 [▼
  0 => "<p> Paragraph 1 </p>"
  1 => "<h2>h2 tag 1 </h2>"
  2 => "<p> Paragraph 2.</p>"
  3 => "<p>Paragraph 3 </p>"
  4 => "<ol> <li>pizza</li> <li>burgers</li> <li>salad</li> </ol>"
  5 => "<ul> <li> <ul> <li> One </li> <li>Twp </li> <li>Three</li> </ul> </li> </ul>"
  6 => "<p>Paragraph 6:</p>"
  7 => "<h4> h4 tag</h4>"
  8 => "<h1> h4 tag</h1>"
  9 => "<h4> h4 tag</h4>"
]
Şafak Çıplak
  • 889
  • 6
  • 12