hallo seth,
jetz habe ich es folgendermaßen gemacht:
$searchstring = '/'.
'([[]'.$tagname.')'.
'((?:([:|=])([a-fA-F0-9]*))?)'.
'((?:([:|=])(")?((.|\n$)*?)(")?)?)'.
'(?:[]])'.
'((.|\n)+?)'.
'(?:[[][/]'.$tagname.')'.
'((?:([:|=])([a-fA-F0-9]*))?)'.
'((?:([:|=])(")?((.|\n$)*?)(")?)?)'.
'(?:[]])'.
'/';
Dadurch erhalte ich den Benutzernamen ohne Anführungszeichen.
Den Array mit den Ergebnissen füge ich mal an:
$pattern_array[0][0]=[quote:c63e8e1118="username"]BLA BLA BLA Inhalt des Elements
[/quote:c63e8e1118]
----------
$pattern_array[1][0]=[quote
----------
$pattern_array[2][0]=:c63e8e1118
----------
$pattern_array[3][0]=:
----------
$pattern_array[4][0]=c63e8e1118
----------
$pattern_array[5][0]=="username"
----------
$pattern_array[6][0]==
----------
$pattern_array[7][0]="
----------
$pattern_array[8][0]=username
----------
$pattern_array[9][0]=s
----------
$pattern_array[11][0]=BLA BLA BLA Inhalt des Elements
----------
$pattern_array[12][0]=
----------
$pattern_array[13][0]=8
----------
Dort kann man sehen, daß die Begrenzung mit ?: nicht überall was bringt, aber das Ergebnis ist schon etwas knapper als ohne.
Weshalb die letzen Zeichen von Unterausdrücken in dem Array noch einmal gesondert auftauchen (8 und s) ist mir etwas fremd - ist das normal?
Momentan wird der Tag in der Variablen $tagname übergeben, sicherlich wäre es jetzt noch möglich, diesen auch per regulärem Ausdruck auszulesen, allerdings habe ich das ganze bereits in einer Schleife integriert und müßte recht viel umschreiben. deswegen lasse ich es jetzt so. Den Performance-Verlust durch mehrmaliges durchlaufen kann ich zur Zeit hinnehmen.
Das schöne ist, daß der Ausdruck für alle mir bekannten Foren-Tags passt und ich durch den Einsatz bereits jede Menge Code einspare (also Löschen kann).
Sicherlich kann man da noch etwas kürzen, ich könnte evtl. einige Klamern noch eliminieren, aber das wäre weitgehend nur optischer Natur.
Viele Grüße
David
PS. in meinem ersten Beitrag hatte ich vergessen zu schreiben, daß die Anführungszeichen nicht als Zeichen sondern als entitie im Quelltext auftauchen ("e;)