FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » reduce all spaces to one
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: reduce all spaces to one [message #176904 is a reply to message #176903] Sat, 04 February 2012 14:57 Go to previous messageGo to previous message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma:
Senior Member
On 2/4/2012 9:41 AM, Thomas 'PointedEars' Lahn wrote:
> John wrote:
>
>> Am 03.02.2012 21:19, schrieb M. Strobel:
>>> Solution shootout:
>>> strobel@s114-intel:~> php -a
>>> Interactive shell
>>>
>>> php> echo str_replace(' ',' ','here are some spaces ');
>>> here are some spaces
>>> php> echo preg_replace('/\s+/', ' ', 'here are some spaces ');
>>> here are some spaces
>>> php>
>>>
>>> The regex solution is the winner.
>>
>> OK. Thanks to all those who answered !!
>
> It should be noted that if your question was understood literally, the
> solutions presented so far would be wrong. \s would match too many
> different characters, as it stands for *white-space* in PCRE, _not_ only the
> space character. In order to reduce only all consecutive *space* characters
> to one space character, you need to write
>
> echo preg_replace('/ +/', ' ', "here are some \n spaces ");
>
> Note that the newline, which is white-space too, is preserved here.
>

Newline is preserved in my version also, if you understood ANYTHING
about how PHP's regex's work (but we already know you don't). It also
takes out tabs - which may be inserted automatically by some editors,
for instance, and can be desirable.

> If you want to make the space character in the expression better visible,
> you can use
>
> (1) echo preg_replace('/\ +/', ' ', "here are some \n spaces ");
>

The search pattern is invalid.

> or
>
> (2) echo preg_replace('/\\ +/', ' ', "here are some \n spaces ");
>

Searches for the sequence '\ '

> or
>
> (3) echo preg_replace('/\x20+/', ' ', "here are some \n spaces ");
>

Ugh!

> or
>
> (4) echo preg_replace('/\\x20+/', ' ', "here are some \n spaces ");
>

Again, invalid escape sequence.

> Your approach,
>
> echo preg_replace('/[ ]+/', ' ', "here are some \n spaces ");
>
> is equivalent to that, but slightly less efficient because of the character
> class (even in Visual Basic .NET). However, it also has the advantage over
> the simple solutions (1) and (2) that multiple spaces in the character class
> will still only match one space.
>
>
> PointedEars

Showing your ignorance again. You do better when you keep your mouth shut.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Stats comp.lang.php (last 7 days)
Next Topic: Check email
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sat Nov 23 11:20:47 GMT 2024

Total time taken to generate the page: 0.10609 seconds