Chance
Themenersteller
Programmierer
Guru (173 Beiträge)
Regulärer Ausdruck; Klammernparsung
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.
joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
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
Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools
Chance
Programmierer
Guru (173 Beiträge)
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.
joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
Chance
Programmierer
Guru (173 Beiträge)
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.
joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
Chance
Programmierer
Guru (173 Beiträge)
Ich meine die Klammer mit dem Inhalt "?if|{$alpha}|==|0| {@index_start}"
matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
Gib uns einfach mal zwei oder drei vollständige Beispiele davon, wie es aussehen kann und welches Ergebnis der reguläre Ausdruck liefern soll.
Make Seitenreport great again!
joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
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
Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools
Chance
Programmierer
Guru (173 Beiträge)
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}
)
)
joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
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
Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools
Das Seitenreport Forum hat aktuell 5275 Themen und 36110 Beiträge.
Insgesamt sind 48360 Mitglieder registriert.
Beitrag erstellen
EinloggenKostenlos registrieren