On Thu, May 27, 2004 at 09:59:05AM -0700, Dan Phiffer wrote:
> So I'm trying to implement a simple wiki-like syntax for hyperlinking.
> Basically I want to match stuff like [this], where the word 'this' gets
> turned into a hyperlink. I have that working, but I want to be able to
> escape the opening bracket, so that it's possible to do \[that] without
> having it match as a link. Here's what I've got:
>
> // Matches fine, but without escaping
> $pattern = "
> /
> \[ # Open bracket
> ([^\]]+?) # Text, including whitespace
> \] # Close bracket
> /x
> ";
>
> // Throws an unmatched bracket warning
> $pattern = "
> /
> [^\\] # Don't match if a backslash precedes
> \[ # Open bracket
> ([^\]]+?) # Text, including whitespace
> \] # Close bracket
> /x
> ";
>
> // Ignores escaping: \[example] still matches
> $pattern = "
> /
> [^\\\] # Don't match if a backslash precedes
> \[ # Open bracket
> ([^\]]+?) # Text, including whitespace
> \] # Close bracket
> /x
> ";
>
> Nothing seems to change if I keep adding backslashes to that first
> matching thingy (i.e. the escaping still doesn't work). Any ideas?
>
Try negative lookbehinds...
$pattern = '
/
(?<!\\\\) \[ # open [ not preceded by a backslash
(.*?) # ungreedy match anything
(?<!\\\\) \] # close ] not preceded by a backslash
/x
';
- Rob
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php