<a href=""></a> <a href="-online-5"></a> <a href="-couple-name-2378"></a> <a href=""></a> <a…
von:
<a href=""></a> <a href=""></a> <a href="-online-30"></a> <a href=""></a> <a href=""></a> <a…
von:
Hallo,
ich hab folgendes Problem:
Mit
\{([i\$\#\~\!\+\@\?][^\{\}]+)\}
Versuche ich den Inhalt aus den ersten Klamern vom folgenden Text rauszusuchen:
{?if|{$alpha}|==|0| {@index_start} }
{?if|{$alpha}|>|0| {@index_weiter} }
was nicht funktioniert.
Ich benötige den "{?if" Anteil, es wird aber "{@index_start}" etc. rausgeworfen.
Hallo
Genau habe ich zwar nicht verstanden worauf das hinauslaufen soll.
Heisst die Problemstellung wird mir aus den wenigen Zeilen nicht klar.
Besonders nicht welches Ergebnis jetzt gebraucht wird.
Aber vielleicht hilft ja dieser Vorschlag.
$test = preg_match(\'#(\\{\\?if\\|(\\{[^\\{]+)(\\{[^\\}]+)\\}\\})#\',$daten);
var_dump($daten[0]);
var_dump($daten[1]);
var_dump($daten[2]);
Gruß
Jörg
Leider nicht direkt.
Weil das ?if nur eine Möglichkeit von vielen ist: @$ etc...
Es geht darum, das die Klammer in der Klammer genommen wird, und nicht Klammer.
Hallo
Und es muss die erste Klammer sein und nur deren Inhalt?
So ich habe mich um deine diversen Möglichkeiten jetzt nicht gekümmert,weil anhand dieser Beschreibung es für mich nicht nachvollziehbar ist welche Möglichkeiten es gibt.
$test = preg_match(\'#\\{[^\\{\\}]+\\{([^\\}]+)\\}#\',$daten);
var_dump($daten);
Gruß
Jörg
Ja.
Aus der Verschachtelung benötige ich nur die erste Ebene.
Das RegX ergibt folgende Ausgabe:
Array
(
[0] => Array
(
[0] => {?if|{$alpha}
[1] => {?if|{$alpha}
)
[1] => Array
(
[0] => $alpha
[1] => $alpha
)
)
Leider nicht, das was ich suche.
Die verschiedenen Möglichkeiten standen im regulären Ausdruck das ich mitgepostet hatte mit drin in der ersten Klammer.
Aber diese sind für die Lösung nicht so wichtig.
Hallo
Okay dann bin ich jetzt ganz verwirrt weil das Regex das ausgibt was du beschrieben hast.
Der Inhalt der ersten Klammer ist halt eben $alpha und das bekommst du ja zurück.
Gruß
Jörg
Ich meine die Klammer mit dem Inhalt "?if|{$alpha}|==|0| {@index_start}"
Gib uns einfach mal zwei oder drei vollständige Beispiele davon, wie es aussehen kann und welches Ergebnis der reguläre Ausdruck liefern soll.
Hallo
Müsste dann darauf hinauslaufen.
(:?\\{)([^\\}]+\\}[^\\}]+\\})(:?\\})
Und das wäre dann wohl die Variante mit den verschiedenen Möglichkeiten.
(:?\\{)([i\\$\\#\\~\\!\\+\\@\\?][^\\}]+\\}[^\\}]+\\})(:?\\})
@matthes Du das versuche ich schon die ganze zeit das er sich klarer ausdrückt.
Danke aber dafür das du mit meiner Ansicht übereinstimmst.
Gruß
Jörg
Funktioniert leider überhaupt nicht.
Ich benötige sowas wie:
Array
(
[0] => Array
(
[0] => {?if|{$alpha}|==|0| {@index_start}}
[1] => {?if|{$alpha}|==|0| {@index_weiter}}
)
[1] => Array
(
[0] => ?if|{$alpha}|==|0| {@index_start}
[1] => ?if|{$alpha}|==|0| {@index_weiter}
)
)
Hallo
Kann auch nicht gehen wenn man die falsche Reihenfolge nimmt um die Unterabfragen nicht einzubeziehen.
(?:\\{)([^\\}]+\\}[^\\}]+\\})(?:\\})
Bei deinem gewünschten Ergebnis sollte das aber noch ausreichen.
\\{([^\\}]+\\}[^\\}]+\\})\\}
Mit diesen Möglichkeiten wäre das dann wohl
\\{([i\\$\\#\\~\\!\\+\\@\\?][^\\}]+\\}[^\\}]+\\})\\}
Gruß
Jörg
Beitrag erstellen
EinloggenKostenlos registrieren