Re: RegExp question: how to add a number?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 15, 2010 at 5:52 AM, Richard Quadling <rquadling@xxxxxxxxx> wrote:
> On 15 October 2010 10:16, Ford, Mike <M.Ford@xxxxxxxxxxxxxx> wrote:
>>> -----Original Message-----
>>> From: Andre Polykanine [mailto:andre@xxxxxxxx]
>>> Sent: 14 October 2010 21:42
>>>
>>> Hi everyone,
>>> I hope you're doing well (haven't written here for a long time :-)).
>>> The question is as follows: I have a regexp that would do the
>>> following. If the string begins with "Re:", it will change the
>>> beginning to "Re[2]:"; if it doesn't, then it would add "Re:" at the
>>> beginning. But (attention, here it is!) if the string starts with
>>> something like "Re[4]:", it should replace it by "Re[5]:".
>>> Here's the code:
>>>
>>> $start=mb_strtolower(mb_substr($f['Subject'], 0, 3));
>>> if ($start=="re:") {
>>> $subject=preg_replace("/^re:(.+?)$/usi", "re[2]:$1", $f['Subject']);
>>> } elseif ($start=="re[") {
>>> // Here $1+1 doesn't work, it returns "Re[4+1]:"!
>>> $subject=preg_replace("/^re\[(\d+)\]:(.+?)$/usi", "re[$1+1]:$2",
>>> $f['Subject']);
>>> } else {
>>> $subject="Re: ".$f['Subject'];
>>> }
>>>
>>> I know there actually exists a way to do the numeral addition
>>> ("Re[5]:", not "Re[4+1]:").
>>> How do I manage to do this?
>>
>> This looks like a job for the "e" modifier (see http://php.net/manual/en/reference.pcre.pattern.modifiers.php, and example #4 at http://php.net/preg_replace). Something like:
>>
>> Â$subject = preg_replace("/^re\[(\d+)\:](.+?)$/eusi", "'re['.(\\1+1).']:\\2'", $f['Subject']);
>>
>> Cheers!
>>
>> Mike
>
> Watch out for the missing '[1]'. This needs to become '[2]' and not '[1]'.
>
> The callback seems to be the only way I could get the regex to work.
>

How about preg_replace_callback()?

Andrew

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux