Substrings herausfiltern mittels Regex

navyseal1

Mitglied
Hi!

Ich versuche mittels Regex alle Vorkommnisse in einem String herauszufiltern.
z.B. hab ich folgenden String
"sdkjaahnsdkansd$#asdasda_sd#$aaaaa$#abc#$bbbb"
und es sollen jene String herausgefiltert werden die sich zwischen $# ....#$ befinden - also in diesem Fall - "asdasda_sd" und "abc"

Mittels preg_match hab ich dies nun auch zusammengebracht, aber er findet lediglich das erste Vorkommnis

PHP:
preg_match('/\$\#\w+(\_|\-|\w)*\#\$/', $str, $matches);

Vielleicht könnte mir jemand helfen wie ich ALLE Vorkommnisse herausfiltern kann!

Danke schon jetzt für euer Bemühen!
 
PHP:
preg_match_all('/\$#(\w[_\-\w]+)#\$/', $str, $matches);
Das Rückgabearray ist allerdings anders aufgebaut als bei der preg_match()-Funktion.
 
Ich muss nun leider doch nochmals was fragen.

Nachdem ich nun mein Script geschrieben habe mit den oben erwähnten Regex hab ich das auf einen anderen Webserver raufgeladen, welcher aber irgendwie mit den benanntenTeilsuchmuster (named subpatterns) nicht zurecht kommt.

Also zb für den Regex ...
PHP:
'/\*\*\*#(?<metaName>\w[_\-\w]+)#\*\*\*/'
... kommt folgende Meldung:
PHP:
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: unrecognized character after (?< at offset 11 in .....
Der Server hat ansich PHP Version 5.2.0 drauf und sollte daher kein Problem machen oder?
Könnte hierbei der SafeMode vielleicht ein Problem darstellen?

Vielleicht könnte mir jemand noch mit dem Problem weiterhelfen, wär schade wenn ich nun alles wegen dieser Kleinigkeit umbauen müsste :/
 
Zurück