Re: regexp magic
| From: | Lars Torben Wilson | Date: | Wed, 29 May 2002 00:24:03 +0000 |
| Subject: | Re: regexp magic | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-99596@lists.php.net to get a copy of this message | ||
On Tue, 2002-05-28 at 16:56, Dan Harrington wrote:
> Greetings everyone,
>
> I'm trying to do some regexp magic and just can't seem to
> get it done with PHP.
>
> Basically I want to evaluate a word and if the last character
> of the word is an 's', to knock it off, unless there are
> two consecutives at the end of the word.
>
> So 'boys' would become 'boy'
> and 'cars' would become 'car'
>
> However, I don't want
> 'happiness' to become 'happines', so I need to stop
> it where there are two consecutive 'ss' on the end of the word.
>
> $out=eregi_replace("[s]$",'',$in); will knock off the last one.
>
> I thought about:
>
> $out=eregi_replace("[^s][s]$",'',$in);
>
> but that won't work....
>
> any ideas?
>
> thanks
This does what you asked for, but that might not be what you
really want...since the output from the following is:
This is a block of spooges about
happiness. Glasses won't work.
Thi i a block of spooge about
happiness. Glasse won't work.
...which doesn't make a hell of a lot of sense. :) Hope this helps
anyway.
<?php
error_reporting(E_ALL);
$text = '
This is a block of spooges about
happiness. Glasses won\'t work.';
echo "$text\n";
$newtext = preg_replace('/([^s]{1})s{1}\b/is', '$1', $text);
echo "$newtext\n";
?>
--
Torben Wilson <torben@php.net>
http://www.thebuttlesschaps.com
http://www.hybrid17.com
http://www.inflatableeye.com
+1.604.709.0506