How can I convert a plain text list into a HTML list using regex in PHP?
Lorem ipsum.
- item 1
- item 2
- item 3
- item 4
Dolores amet.
Into
Lorem ipsum.
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
</ul>
Dolores amet.
How can I convert a plain text list into a HTML list using regex in PHP?
Lorem ipsum.
- item 1
- item 2
- item 3
- item 4
Dolores amet.
Into
Lorem ipsum.
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
</ul>
Dolores amet.
Regex pattern
\n\s?-\s?(.*)
example https://regex101.com/r/zQ7xL6/1
Getting the matches.
For getting every match use preg_match_all():
preg_match_all($pattern, $your_text, $matches);
Array (
[0] => Array (
[0] => 'item 1'
)
[1] => Array (
[0] => 'item 2'
)
etc..
)
HTML
Here you can do everything you want with your matches. So let's add some HTML tags.
$html_text = '';
foreach($matches as $match) {
$item = $match[0]; //item 1
$html_text .= '<li>' . $item . '</li>';
}
$html_text = '<ul>' . $html_text . '</ul>';
Output
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
</ul>
preg_replace way
For inspiration look here A regex that converts text lists to html in PHP hope I helped you.