| Posted by Alan on 03/19/07 12:28 
"Toby A Inkster" <usenet200703@tobyinkster.co.uk> wrote in message news:ms01d4-taf.ln1@ophelia.g5n.co.uk...
 > zainally wrote:
 >
 >> I want to detect uppercase characters in a string and separate the two
 >> words in it by a space. I know I can use preg_replace for it, but I am
 >> not very good at regular expressions. Can someone help?
 >
 > You want something like this:
 >
 > $s = preg_replace('/([^\s])([A-Z])/', '\1 \2', $s);
 >
 > You probably want to consider what sort of behaviour is "desirable" in
 > edge cases like this:
 >
 > Print404ErrorPage
 > GetHTTPRequest
 > Jpeg2Gif
 >
 > The above regular expression will output:
 >
 > Print404 Error Page
 > Get H T T P Request
 > Jpeg2 Gif
 >
 > which might not be what you wanted!
 >
 
 Further to Toby's post:
 
 $TestStr = Print404ErrorPage\nGetHTTPRequest\nJpeg2Gif\nJPEG";
 
 $CapRegX = '/(\B[A-Z])(?=[a-z])|(?<=[a-z])([A-Z])/sm';
 $RepStr = ' $1$2';
 $OutStr = preg_replace($CapRegX,$RepStr,$TestStr);
 
 produces:
 
 Print404 Error Page
 Get HTTP Request
 Jpeg2 Gif
 JPEG
 
 HTH
 --
 
 Alan
 [Back to original message] |