Beat: Hilfe bei regulärem Ausdruck gesucht

Beitrag lesen

if (preg_match_all("#\OpenUI[^ ]* \" .$element. "(/(.*?):|:)(.*?)\CloseUI[^ ]*: \" .$element. "#s", $teile[1],  $contents)){

Dein Pattern ist reichlich wirr
z.B. das subpattern "[^ ]* \*"

Lerne bitte solche Dinge wie [ ]+
oder wohl angemessener \s+

Das alles brachte nichts. Was micht wundert ist auch die Tatsache das nur bis zum nächsten *CloseUI gesucht wird und nicht wie gedacht *CloseUI: *NIS66OpMsg

Solange $element == '' wundert das auch nicht.

Ich weiss PHP und REX sind eine unheilige Allianz, geprägt von unlesbaren Bandwürmern.

Hier eine Perl REX

my $element = 'example';  
if($element){  
  my $start = qr/ ^ \*OpenUI \s+ \Q $element \E /x;  
  my $end = qr/ \*CloseUI \s+ \Q $element \E /x;  
  $test =~ /$start  \s+ (.+?) \s+ $end/xs  
       and subparse($element, $1);  
}

Was ich grundsätzlich tue:
Ich definiere Start und Endpattern gesondert
Beachte \Q ... \E, welches Spezielle Zeichen in $element behandelt.
Das solltest du auch in PHP analog beachten.
//x erlaubt mir, den String etwas zu strukturieren.

mfg Beat

--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische