I’ve already tried a couple of regex but cannot fix this one:
I need an enter line before the hashtags start (so there is some space).
Example:
It’s essential to keep your pup cool in the summer months! Try to keep
them out of the heat as much as possible – keep the house cool,
provide shade and run a fan for them if you can. #Dogs #Animals
#Summer #DogCare #Humidity #HeatStroke #Cooling #HeatExhaustion #StayCool #HealthyPups
Should be:
It’s essential to keep your pup cool in the summer months! Try to keep
them out of the heat as much as possible – keep the house cool,
provide shade and run a fan for them if you can.#Dogs #Animals #Summer #DogCare #Humidity #HeatStroke #Cooling #HeatExhaustion #StayCool #HealthyPups
If there is a hashtag in the text it should not add whitespace, for example (note hashtags in text!):
It’s essential to keep your pup cool in the summer months! Try to keep
them out of the heat as much as #possible – keep the house cool,
#provide shade and run a #fan for them if #you can. #Dogs #Animals #Summer #DogCare #Humidity #HeatStroke #Cooling #HeatExhaustion #StayCool #HealthyPups
How can I solve this with Regex and PHP?
2
Answers
You can match a series of hashtags with the regexp:
#w+
matches a single hashtags*
matches the optional whitespace between the hashtags+
after the group matches a sequence of at least one of these$
matches the end of the input string.You can then use
preg_replace()
to insert a blank line before this.Match a space which is followed by one or more sequences of hashtags until the end of the string. Inform
preg_replace()
to make only 1 replacement by adding1
as the fourth parameter.Code: (Demo)
Or without a lookahead or a replacement limit: (Demo)
Both approaches will cleanly replace the space before the sequence of hashtags with the two newlines.