I have a number of strings which contain words which are bunched together and I need to seperate them up.
For example ThisWasCool - This Was Cool
MyHomeIsHere - My Home Is Here
Im slowly getting my head around regular expressions and I believe to do this I should use preg_replace. My problem is putting together the expression to find the match.
I have only got this far
preg_replace('~^[A-Z]~', " ", $string)
Each string contains a lot of words, but ONLY the first word contains bunched words so using my example above a string would be
"ThisWasCool to visit you again" - "This Was Cool to visit you again"
I have told it to start at the beginning, and look for capitals, but what I dont know how to do is - restrict it only to the first word of each string - how to reuse the capital letter in the replace part after the space
Using the PHP preg_replace() function, you can add space in front of uppercase character in a string.
Your regex '~^[A-Z]~'
will match only the first capital letter. Check out Meta Characters in the Pattern Syntax for more information.
Your replacement is a newline character '\n'
and not a space.
Use this code:
$String = 'ThisWasCool'; $Words = preg_replace('/(?<!\ )[A-Z]/', ' $0', $String);
The (?<!\ )
is an assertion that will make sure we don't add a space before a capital letter that already has a space before it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With