[pmwiki-users] Category Markup

Patrick R. Michaud pmichaud at pobox.com
Fri Dec 16 23:47:02 CST 2005


On Sat, Dec 17, 2005 at 12:32:09AM -0500, DaveG wrote:
> I'm having trouble with regular expression replacement.
> 
> Start String : "Tags: a,b, c"
> Result String: "Tags: [[!a]],[[!b]], [[!c]]"
> 
> $ROSPatterns["/^Tag(s?):\\s([A-Za-z0-9]\s?)+([,]\s?([A-Za-z0-9]\s?)+)*$/i"] 
> = "Tags: [[!\$2]]";

Because of the repeated names on a line I don't think this can
be done via a regular expression substitution in PHP.  AFAIK, a repeated
regex pattern like (,\s?([A-Za-z0-9]\s?)+)* will capture and replace
only the last matching repetition.

I think it'll have to be done in two steps:  a pattern to recognize
the Tags: line, and a second one in a subroutine to convert the tags.
So, perhaps something like:

    $ROSPatterns["/^Tags?:\\s*([\\w\\s,]+)/e"] = "TagsToCategories('$1')";

    function TagsToCategories($tags) {
      return preg_replace('/\\w+/', '[[!$0]]', $tags);
    }

Pm





More information about the pmwiki-users mailing list