Chris Palmer Breuer
Chris Palmer Breuer

Reputation: 690

Replace newlines within <ul>-tag

I have been battling with this for a while, because I guess I am not that awesome at regex. I have a few ul-tags and within those I would like to replace every /n newline with "" (nothing). So, I would like to have this

other lines right here
[ul]
[li]line[/li]
[li]line 1[/li]
[li]line 2[/li]
[/ul]
other lines right here

[ul]
[li]line[/li]
[li]line 1[/li]
[li]line 2[/li]
[/ul]
other lines right here

changed to

other lines right here
[ul][li]line[/li][li]line 1[/li][li]line 2[/li][/ul]
other lines right here

[ul][li]line[/li][li]line 1[/li][li]line 2[/li][/ul]
other lines right here

I only want to get rid of the newlines within the ul-tag. How do I go about this issue I have? Should I pre_match_all every ul tag and then format the matched content the way I would like it to be? Or is there any easier solution with preg_replace that takes care of all the newlines within the tag?

Thanks for the help already!

Upvotes: 1

Views: 429

Answers (1)

rjdown
rjdown

Reputation: 9227

I'd look at it a different way. the [li]s will always be inside a [ul] (well, hopefully!). So you can just match newlines either side of those:

$string = preg_replace('/\R*(\[\/?li\])\R*/', '$1', $string);

You could do the same with a couple of str_replaces:

$string = str_replace("\r\n[li]", "[li]", $string);
$string = str_replace("[/li]\r\n", "[/li]", $string);

Upvotes: 1

Related Questions