how to replace all Uppercase letters with spacing?
What about something like this :
$string = "MaryGoesToSchool";
$spaced = preg_replace('/([A-Z])/', ' $1', $string);
var_dump($spaced);
This :
- Matches the uppercase letters
- And replace each one of them by a space, and what was matched
Which gives this output :
string ' Mary Goes To School' (length=20)
And you can then use :
$trimmed = trim($spaced);
var_dump($trimmed);
To remove the space at the beginning, which gets you :
string 'Mary Goes To School' (length=19)
Try this:
$expectedoutput = preg_replace('/(\p{Ll})(\p{Lu})/u', '\1 \2', $string);
The \p{…}
notations are describing characters via Unicode character properties; \p{Ll}
denotes a lowercase letter and \p{Lu}
an uppercase letter.
Another approach would be this:
$expectedoutput = preg_replace('/\p{Lu}(?<=\p{L}\p{Lu})/u', ' \0', $string);
Here every uppercase letter is only prepended with a space if it’s preceded by another letter. So MaryHasACat
will also work.