RE: [PHP] Re: split on whitespace, preserving whitespace...

From: Date: Fri, 20 Jul 2001 13:51:49 +0000
Subject: RE: [PHP] Re: split on whitespace, preserving whitespace...
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-58897@lists.php.net to get a copy of this message
Several of these solutions are good ideas, but they don't preserve the whitespace as he desired. Preg_split with the capturing of the (\s+) delimiter does the trick. Jack -----Original Message----- From: Stefan Rusterholz [mailto:scripting@interaktion.ch] Sent: Friday, July 20, 2001 9:48 AM To: php-general@lists.php.net Subject: Re: [PHP] Re: split on whitespace, preserving whitespace... Uuhmm, I'm sorry. I haven't read it throught to the end. The solution ist a bit different: use preg_replace to replace multiple spaces with single spaces: $sometext2split = preg_replace("|", " ",$sometext2split); #make shure that the separator isn't in the text anywhere around $sometext2split = preg_replace("/\s+/", "| |",$sometext2split); and then explode the string (i don't know wether explode or preg_split is faster, I tend to explode for simple split operations): $myarray = explode("|",$sometext2split); this should work. But probably it was a better solution to insert the spaces with a loop between the words than to run the risk, that the separator is somewhere in the text... best regards Stefan Rusterholz, scripting@interaktion.ch ----- Original Message ----- From: "Stefan Rusterholz" <scripting@interaktion.ch> To: <garth@utmail.to>; <php-general@lists.php.net> Sent: Friday, July 20, 2001 3:34 PM Subject: Re: [PHP] Re: split on whitespace, preserving whitespace... > If you'r using PHP >4 use preg_split. (works also with php 3 >= 3.09) > see http://www.php.net/manual/en/function.preg-split.php for > detailed > information. > The split pattern you'd need is: > $sometext2split = "hello world with a lot of whitespaces!"; > $myarray = preg_split ("/\s+/",$sometext2split); > > you should get > $myarray := ['hello', 'world', 'with', 'a', > 'lot', 'of', 'whitespaces!'] > > But remark: \t (tabs) will also count as whitespace, but not \n and \r. See > docu for more informations > > Hope, it helps > best regards > Stefan Rusterholz, scripting@interaktion.ch > > > ----- Original Message ----- > From: "Garth Dahlstrom" <garth@utmail.to> > To: <james@towntalk.co.uk> > Cc: <php-general@lists.php.net> > Sent: Friday, July 20, 2001 1:44 PM > Subject: [PHP] Re: split on whitespace, preserving whitespace... > > > > > try $wordarr = explode(" ", $string); > > > > mmm... yeah... That's what I had before > > (acutally I was using the alias split)... > > it does NOT however preserve the areas > > of white space. > > > > Instead the target of: > > > > $wordsarr = ('This',' ','contans',' > > > > ','white',' ','space',' > ','.') > > > > You get: > > > > $wordsarr = > > > > ('This','','contans','','white','space','','.') > > > > which has totally destroyed the whitespace I'm trying to > > keep intacted. > > > > I'm starting to wonder if maybe preg_match_all is better > > suited for something like this... just no idea how to do > > the regex that matches words & spaces and populates them > > into the array. > > > > maybe something like: echo > preg_match_all("|(\s+)?(.*)?(\s+)?|",$test,$arr); > > sigh... I dunno regex. > > > > -Garth > > > > Northern.CA ===-- > > http://www.northern.ca > > Canada's Search Engine > > > > On Fri, 20 Jul 2001 09:20:59 +0100 "James Holloway" wrote: > > > > > > > try $wordarr = explode(" ", $string); > > > > > > James. > > > > > > ----- Original Message ----- > > > From: "Garth Dahlstrom" <garth@utmail.to> > > > Newsgroups: php.general > > > To: <php-general@lists.php.net> > > > Sent: Friday, July 20, 2001 5:43 AM > > > Subject: split on whitespace, preserving whitespace... > > > > > > > > > > Hi all, > > > > > > > > I'm trying to build a spell checker for a web form. > > > > What has got me stumped is being able to do a split > > > > so that whitespace and words are stored as seperate > > > > elements of the same array. > > > > > > > > ideally, I'd use some form of preg_split to put: > > > > > > > > "This contans white space ." > > > > > > > > into an array like: > > > > > > > > $wordsarr = ('This',' ','contans',' > > > > ','white',' ','space',' > ','.') > > > > > > > > So that I can do a a loop as follows: > > > > > > > > for ($i = 0; $i < count($wordarr); $i++) > > > > { > > > > if (!trim($wordarr[$i]) == "" && !eregi(trim($wordarr[$i]),'.,/')) > > > > { > > > > file://check spelling > > > > file://correct errors > > > > } > > > > echo $wordarr[$i]; > > > > } > > > > and end up with: > > > > "This contains white space ." > > > > > > > > can a split like this be accomplished using > > > > preg_split or do I need to go through the string > > > > one space at a time in a while loop? > > > > > > > > -Garth > > > > > > > > Northern.CA ===--- > > > > http://www.northern.ca > > > > > > > > > > > > > > > > > > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net > > For additional commands, e-mail: php-general-help@lists.php.net > > To contact the list administrators, e-mail: php-list-admin@lists.php.net > > > > > > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net > For additional commands, e-mail: php-general-help@lists.php.net > To contact the list administrators, e-mail: php-list-admin@lists.php.net > > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net For additional commands, e-mail: php-general-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net

« previous php.general (#58897) next »