Reputation: 690
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
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