RE: [PHP] preg_match_all question
| From: | Boyd, Todd M. | Date: | Fri, 16 Jan 2009 20:13:16 +0000 |
| Subject: | RE: [PHP] preg_match_all question | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-286522@lists.php.net to get a copy of this message | ||
> -----Original Message-----
> From: Robert Cummings [mailto:robert@interjinn.com]
> Sent: Friday, January 16, 2009 4:31 AM
> To: Phil Ewington - iModel Ltd.
> Cc: php-general@lists.php.net
> Subject: Re: [PHP] preg_match_all question
>
> On Fri, 2009-01-16 at 09:42 +0000, Phil Ewington - iModel Ltd. wrote:
> > Hi All,
> >
> > Having an issue with regular expressions, never been my strong
point!
> >
> > The following pattern only picks up one instance per line, if more
> than
> > one instance exists all text from first {{ to last }} is included,
> can
> > anyone point out where I am going wrong?
> >
> > preg_match_all("/\{\{lang:(.*)\}\}/", $str, $tags);
>
> You need the ungreedy modifier:
>
> preg_match_all("/\{\{lang:(.*)\}\}/U", $str, $tags);
FWIW, you can tell just the .* to be un-greedy using a ? like so:
preg_match_all('/\{\{lang:(.*?)\|\|/', $str, $tags);
// Todd