[pmwiki-users] Pagename alternative conflicts? was Re: Wikipaths
Patrick R. Michaud
pmichaud at pobox.com
Fri Sep 8 09:07:48 CDT 2006
On Fri, Sep 08, 2006 at 09:52:06AM -0400, Crisses wrote:
> On Sep 8, 2006, at 8:48 AM, Patrick R. Michaud wrote:
>
> >Still, I can't think of anything currently in PmWiki that will
> >specifically disallow the colon in pagenames, if one is willing to
> >accept that there may be conflicts with url protocol prefixes and
> >InterMap prefixes.
>
> Can the intermap delimiter be changed? LOL
Actually, it can, with a couple of small modifications. :-)
> >allow colons, and get MakePageName() to not strip colons in the
> >pagename. So, in config.php:
> >
> > $NamePattern = '[[:upper:]\\d][\\w:]*(?:-[\\w:]+)*';
> > $PageNameChars = '-:[:alnum:]';
>
> It's not working. I personally prefer perl (PCRE) over posix (PREG)
> regexes....
These *are* PCRE regexes -- that's basically all I use.
The preg_* functions in PHP use PCRE.
> In posix regex, : does not seem to need to be escaped, but your
> regexes didn't work.
Odd, they're working for me.
http://www.pmichaud.com/sandbox/colons/pmwiki.php?n=Main.HomePage
> I know the regexes you hinted at are (not) working because I managed
> to break them while tweaking to see if I could fix them.
> Original pmwiki.php line
> //pmwiki.php:43:$NamePattern = '[[:upper:]\\d][\\w]*(?:-\\w+)*';
> $NamePattern = '[[:upper:]\\d][\\w]*(?:-[\\w:]+)*';
> $PageNameChars = '-:[:alnum:]';
This version of $NamePattern is saying that colons can only appear
after hyphens.
> I tried
> $NamePattern = '[[:upper:]\\d][\\w]*(?:-[\\w]+[:]+)*';
This is saying that colons can only occur after hyphens, and then
only if at the end of the pagename or immediately followed by a hyphen. :-)
> and that failed also.
> $PageNameChars=':-[:alnum:]';
> blew up with fireworks
Yes, because the hyphen is no longer treated as a hyphen but as
a range character. $PageNameChars gets embedded in a pcre
"[^...]" sequence, to identify the characters that are *not*
allowed in a pagename. Thus it's the difference between
[^-:[:alnum:]] and [^:-[:alnum:]]
In the first, the hyphen means "don't match a hyphen", in the
second it means "don't match any character between colon and ["
(which would really blow up with fireworks, indeed).
At any rate, I'm curious as to why the versions I supplied aren't
working for you -- is there a url I can look at? Or perhaps
try it on a clean install w/no recipes?
Pm
More information about the pmwiki-users
mailing list