[pmwiki-devel] preg dot question...
Patrick R. Michaud
pmichaud at pobox.com
Thu Dec 7 19:28:42 CST 2006
On Thu, Dec 07, 2006 at 07:21:32PM -0500, The Editor wrote:
> I have a pattern matching I'm using for a redirect markup called (:forward:).
>
> It looks like this:
>
> $x = preg_replace('/\(\:forward ([-.\\w]+)\:\)/e', 'Redirect($1)', $x);
>
> It works fine BUT
>
> when I put (:forward Group.Page:) the value passed to Redirect is
> GroupPage. The dot disappears.
You don't have quotes around your $1. Thus after doing the match,
PHP replaces the $1 with the part in parentheses and sees
Redirect(Group.Page)
and since Group.Page isn't a string, the dot gets lost. You really
want:
$x = preg_replace('/\(\:forward ([-.\\w]+)\:\)/e', "Redirect('$1')", $x);
BTW, I've noticed this throughout the ZAP code, where things that
ought to be strings aren't placed in quotes. That's generally not
a good idea, because one never knows when a word will accidentally
end up being a PHP function or having a meaning other than being
a bareword string.
Pm
More information about the pmwiki-devel
mailing list