[pmwiki-users-de] Automatic wikitrails generation for RSS possible?

Michael Engelke PmWiki at MEngelke.de
Do Jun 5 03:05:40 CDT 2008


Thomas Tempelmann schrieb:
> Nun würde ich gern die regex so ändern, daß sie alle üblichen Page-Namen
> "matcht" und dann den Match in der Ausgabe verwendet. Also probierte ich
> das:
>
> if(preg_match('/^(Main[\.|\/]([a-zA-Z0-9]+))$/',$pagename, $matches)) {
>   $RecentChangesFmt['Main.Foobar'] = '* $matches[1]';
> }
>
> Hier versuche ich, mir die Matches von der regex geben zu lassen und gebe
> sie dann probehalber in der Change-Zeile aus. Leider bekomme ich statt einem
> Match-Text nur "$matches[1]" direkt angezeigt. Anfängerfehler Ich muß
> zugeben, daß ich nicht so fit in PHP bin.?
>   

Das liegt an den Anführungszeichen:
'$foobar' ergibt genau den Text $foobar
"$foobar" ergibt den Inhalt der Variable $foobar

Also entweder schreibst Du '* '.$matches[1] oder "* $matches[1]"

> Weiterhin: Wie bekomme ich den Match-String so hin, daß er zwar a-z und auch
> "-" annimmt, aber nicht "-RecentChanges"? Ich kenne nur "[^ ... ]" als
> non-match, aber das geht ja nur bei einzelnen Zeichen, nicht?
>   

Das macht man am besten mit Look-around! (Kann man in der Wikipedia 
unter Regex nachlesen)

Hier die korrigierte Beispiellösung:
if(preg_match('/^(Main[\.|\/][\w-]+)(?<!-RecentChanges)$/',$pagename, 
$matches))
  $RecentChangesFmt['Main.Foobar'] = "* [[$matches[1]]]";

-- 
eMail: PmWiki at MEngelke.de      ICQ: 267544462      Homepage: wiki.MEngelke.de