Re: Re: Dynamic Regex
| From: | Greg Beaver | Date: | Thu, 09 Jan 2003 06:09:05 +0000 |
| Subject: | Re: Re: Dynamic Regex | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-130870@lists.php.net to get a copy of this message | ||
hi Gerard,
I didn't think you were complaining :)
the problem is in [/url]
$foo = '/\[url\]([a-z]+://.*?)\[/url\]/';
should be
$foo = '/\[url\]([a-z]+://.*?)\[\/url\]/';
that "/" was ending the pattern, and so preg_* was trying to read "url\]/"
as closing information, and probably giving an odd error about "u" not being
appropriate
that's why # worked, because there were no other # in the string.
Hope that answers the question (properly this time!)
Take care,
Greg
----- Original Message -----
From: "Gerard Samuel" <gsam@trini0.org>
To: "Greg Beaver" <greg@chiaraquartet.net>
Cc: <php-general@lists.php.net>
Sent: Thursday, January 09, 2003 12:24 AM
Subject: Re: [PHP] Re: Dynamic Regex
> What you suggested is what I was trying before. My original example
> was incorrect.
> Here is an good example for the variable holding the pattern ->
> $foo = '/\[url\]([a-z]+://.*?)\[/url\]/';
> This pattern would not work, but if I change it to
> $foo = '#\[url\]([a-z]+://.*?)\[/url\]#';
> It does work.
>
> Not complaining but just trying to figure out why the first version
> doesn't work for future references.
> Thanks
>
> Greg Beaver wrote:
>
> >Hi Gerard,
> >
> >all the preg_* functions require delimiters surrounding regular
expressions.
> >
> >$foo = '\[this\](.*?)that';
> >
> >should be by default:
> >
> >$foo = '/\[this\](.*?)that/';
> >
> >the code you tried uses # as the delimiter instead of /, an option preg_*
> >allows
> >
> >Take care,
> >Greg
> >--
> >phpDocumentor
> >http://www.phpdoc.org
> >
> >"Gerard Samuel" <gsam@trini0.org> wrote in message
> >news:3E1CC193.90605@trini0.org...
> >
> >
> >> The example doesn't have to make sense, but Im looking for the correct
> >>syntax for $foo. I was trying ->
> >>$foo = '\[this\](.*?)that';
> >>$bar = 'the other';
> >>
> >>$str = preg_replace($foo, $bar, $other_string);
> >>
> >>But that doesn't work. I came across an example where the syntax of
> >>$foo is in ->
> >>$foo = '#\[this\](.*?)that#';
> >>
> >>The second syntax of $foo works. I was wondering on the meaning of # in
> >>the string??
> >>
> >>Thanks
> >>
> >>--
> >>Gerard Samuel
> >>http://www.trini0.org:81/
> >>http://dev.trini0.org:81/
> >>
> >>
> >>
> >>
> >
> >
> >
> >
> >
>
> --
> Gerard Samuel
> http://www.trini0.org:81/
> http://dev.trini0.org:81/
>
>
>
>