PHP: Reguläre Ausdrücke

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Gast210225

PHP: Reguläre Ausdrücke

Beitrag von Gast210225 »

Hallo,

ich habe im moment ein kleines Problem mir regulären ausdrücken-... hier das Beispiel:

Code: Alles auswählen

$string = 'Ein String... {VARIABLE_1} und {VARIABLE_2} usw...';
preg_match_all('/{(.*)}/i', $string, $results);
var_dump($results);
dabei kommt folgendes raus:

Code: Alles auswählen

array(2)
{
    [0]=>
        array(1)
        {
            [0]=> string(29) "{VARIABLE_1} und {VARIABLE_2}"
        }
    [1]=>
        array(1)
        {
            [0]=> string(27) "VARIABLE_1} und {VARIABLE_2"
        }
}
Ich will aber dass dabei "{VARIABLE_1}" und "{VARIABLE_2}" rauskommt.
Wisst ihr wie ich das machen kann?
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Im Prinzip sollte das richtig sein, aber vllt. mal { und } maskieren? Weil soweit ich weiss gehören die mit zum Regexsyntax.
Gast210225

Beitrag von Gast210225 »

Hallo,
wie maskiert man die {?
so?

Code: Alles auswählen

preg_match_all('/\{(.*)\}/i', $string, $results);
Weil das habe ich gerade probiert und das geht nicht... immernoch das selbe ergebniss....
Hat sonst noch jemand eine Idee?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Da ist ein logischer Fehler drin. Der Ausdruck .* ist "gierig", d.h. er nimmt so viel er kriegen kann. Diese Gier lässt sich mit einem ? beheben:

Code: Alles auswählen

preg_match_all('/\{(.*?)\}/i', $string, $results);
Alternativ könntest du auch verbieten, dass in dem inneren Text schließende Klammern vorkommen:

Code: Alles auswählen

preg_match_all('/\{([^\}]*)\}/i', $string, $results);
Die geschweiften Klammern werden übrigens zur Angabe der Häufigkeit von best. Ausdrücken verwendet.

q{2} bedeutet beispielsweise dass an dieser Stelle genau 2 mal ein q stehen muss (also qq).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Gast210225

Beitrag von Gast210225 »

Hallo,

danke, genau das habe ich gesucht :)
Antworten

Zurück zu „Coding & Technik“