Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #9892

Re: how to change old ereg?

Message-ID <3829059.0O4M6Kg4EO@PointedEars.de> (permalink)
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Organization PointedEars Software (PES)
Date 2013-06-26 14:13 +0200
Subject Re: how to change old ereg?
Newsgroups comp.lang.php
References <f60593e2-b741-40ba-9355-dcbfd41ac386@googlegroups.com> <8e2894b4-16cf-4599-af33-391fc6570124@googlegroups.com> <kqekud$ap3$1@softins.clara.co.uk>

Show all headers | View raw


Tony Mountifield wrote:

> Astrid  <astrid.kuhr@gmail.com> wrote:
>> The original was:
>>  
>>   } elseif (ereg('^M?(([0-9]?)[ ]?([0-9])(/?)([0-9]*))SM$',
>>                       $temp_visibility_miles . ' ' . $part, $regs)) {
>>  
>> and I changed to
>>  
>>  } elseif (preg_match('/^M?(([0-9]?)[ ]?([0-9])(/?)([0-9]*))SM$/',
>>                      $temp_visibility_miles . ' ' . $part, $regs)) {
>>  
>> 
>>  But then:
>>  
>>  Warning: preg_match() [function.preg-match]: Unknown modifier '?' in
>>  /var/www/html/phpweather/phpweather.php on line 329
>>  
>>  And very very many other error-messages to.
>>  
>>  How can I change it to get it work?
> 
> That's because you have an unescaped / within your regex, so it sees
> /^M?(([0-9]?)[ ]?([0-9])(/ followed by a ? as a regex modifier.

Good catch.  Also, in POSIX Extended Regular Expressions (ERE) this is 
written simpler

  ^M?(([0-9]?) ?([0-9])(…

and in Perl-Compatible Regular Expressions (PCRE) it is written simpler

  ^M?((\d?) ?(\d)(…

> Try this:
> 
> } elseif (preg_match('/^M?(([0-9]?)[ ]?([0-9])(\/?)([0-9]*))SM$/',
> 
> It wasn't a problem in ereg() because the regex didn't need to be enclosed
> in //

It should be noted that *any* delimiter *except* an alphanumeric character 
and backslash may be used.  This can help to make PCREs in PHP easier to 
read:

  preg_match('#^M?((\d?) ?(\d)(/?)(\d*))SM$#', …

See also: <http://php.net/preg_quote>.


PointedEars
-- 
Sometimes, what you learn is wrong. If those wrong ideas are close to the 
root of the knowledge tree you build on a particular subject, pruning the 
bad branches can sometimes cause the whole tree to collapse.
  -- Mike Duffy in cljs, <news:Xns9FB6521286DB8invalidcom@94.75.214.39>

Back to comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

how to change old ereg? astrid.kuhr@gmail.com - 2013-06-25 21:41 -0700
  Re: how to change old ereg? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-06-26 11:47 +0200
  Re: how to change old ereg? Astrid <astrid.kuhr@gmail.com> - 2013-06-26 04:29 -0700
    Re: how to change old ereg? tony@mountifield.org (Tony Mountifield) - 2013-06-26 11:57 +0000
      Re: how to change old ereg? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-06-26 14:13 +0200
        PREG \d vs. [0-9] (was: how to change old ereg?) Christoph Michael Becker <cmbecker69@arcor.de> - 2013-06-26 16:42 +0200
          Re: PREG \d vs. [0-9] Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-06-26 18:02 +0200
      Re: how to change old ereg? Gregor Kofler <usenet@gregorkofler.com> - 2013-06-26 21:34 +0200
        Re: how to change old ereg? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-06-27 01:18 +0200
          Re: how to change old ereg? The Natural Philosopher <tnp@invalid.invalid> - 2013-06-27 12:55 +0100
  Re: how to change old ereg? Astrid <astrid.kuhr@gmail.com> - 2013-06-26 05:24 -0700
  Re: how to change old ereg? Astrid <astrid.kuhr@gmail.com> - 2013-06-28 01:38 -0700
    Re: how to change old ereg? tony@mountifield.org (Tony Mountifield) - 2013-06-28 09:02 +0000
      Re: how to change old ereg? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-06-28 12:39 +0200
      Re: how to change old ereg? Denis McMahon <denismfmcmahon@gmail.com> - 2013-06-28 11:08 +0000
  Re: how to change old ereg? Astrid <astrid.kuhr@gmail.com> - 2013-06-28 02:46 -0700
    Re: how to change old ereg? Jerry Stuckle <jstucklex@attglobal.net> - 2013-06-28 08:48 -0400

csiph-web