string auslesen
Bobbi
- php
0 Gunnar Bittersmann0 Bobbi0 Ashura0 Ashura
0 preg_match()
EisFuX
1 dedlfix
Hallo Leute,
ich habe einen String:
{test}01-23{test}
Aus diesem String möchte ich jetzt nur "01-23" auslesen. {test} ist jedoch immer unterschiedlich lang.
Kann mir einer helfen, ich weiss echt nicht, wie ich das lösen soll.
mfg
Bobbi
Hello out there!
ich habe einen String:
{test}01-23{test}Aus diesem String möchte ich jetzt nur "01-23" auslesen. {test} ist jedoch immer unterschiedlich lang.
Kann mir einer helfen, ich weiss echt nicht, wie ich das lösen soll.
Nein, solange du echt nicht weißt, wie du das beschreiben sollst.
Stehen dort immer geweifte Klammern? Möchtest du nach zwei Ziffern gefolgt von '-' gefolgt von zwei Ziffern suchen?
See ya up the road,
Gunnar
also ein string kann zB so aussehen:
abcdefghijklmn98-20ogfkerdfnsdmsdfg
habe gesehen, dass es mit der funktion preg_match() geht.
Doch ich verstehe nicht ganz, in welche Klammern welcher Wert kommt, es gibt ja [], () und {}. In den () steht ja das, was ich später erhalte. Mit [] lege ich fest, welche Zeichen enthalten sind, richtig?
Und wofür sind {}? Für die Länge?
Hallo Bobbi.
habe gesehen, dass es mit der funktion preg_match() geht.
Doch ich verstehe nicht ganz, in welche Klammern welcher Wert kommt, es gibt ja [], () und {}. In den () steht ja das, was ich später erhalte. Mit [] lege ich fest, welche Zeichen enthalten sind, richtig?
Und wofür sind {}? Für die Länge?
Absolut lesenswert hierzu ist das Tutorial beim RegExp–Evaluator.
also ein string kann zB so aussehen:
abcdefghijklmn98-20ogfkerdfnsdmsdfg
Dies ließe sich aber noch immer mit einfachen Zeichenkettenfunktionen umsetzen. Wichtig ist hierbei nur, ob der „-“ _zwingend_ immer vorhanden ob die beiden Zahlen davor und dahinter _zwingend_ immer zweistellig sind.
Wenn du beides mit „ja“ beantworten kannst, genügen strpos und substr, wie dedlfix bereits schrieb. Hierbei suchst du ganz einfach die Position von „-“ und extrahierst aus der gesamten Zeichenkette nun alles von der Fundstelle von „-“ minus zwei (ersten zwei Ziffern) mit einer Länge von fünf Zeichen. (Beide Ziffern zuzüglich „-“.)
Einen schönen Montag noch.
Gruß, Ashura
Hallo Gunnar™.
[…] mit einer Länge von fünf Zeichen. (Beide Ziffern zuzüglich „-“.)
Natürlich meinte ich hier „Beide Zahlen …“.
Einen schönen Montag noch.
Gruß, Ashura
Hallo Bobbi,
also ein string kann zB so aussehen:
abcdefghijklmn98-20ogfkerdfnsdmsdfghabe gesehen, dass es mit der funktion preg_match() geht.
Das ist schon mal ein guter Anfang. Mit preg_match() kannst du nach bestimmten Mustern suchen und die gefundene Stelle in ein "Treffer-Array" eintragen.
Doch ich verstehe nicht ganz, in welche Klammern welcher Wert kommt, es gibt ja [], () und {}. In den () steht ja das, was ich später erhalte.
Die runden Klammern dienen erstmal dazu, um Teilausdrücke (oder Unterausdrücke) innerhalb eines Suchmusters zu Gruppen zusammenzufassen. Auf diese geklammerten Teilbereiche kann man später zurückgreifen. In preg_match() kann man das z.B. tun, in dem man das oben erwähnte Treffer-Array übergibt. Dort stehen dann die Teilausdrücke aufgeführt.
Mit [] lege ich fest, welche Zeichen enthalten sind, richtig?
Das nennt sich Zeichenklasse, "character class" oder ähnlich ...
Und wofür sind {}? Für die Länge?
Für die Anzahl der zu suchenden Zeichen. Die Syntax ist {min,max}. Es gibt aber auch diverse Kurzschreibweisen und Ersatzzeichen dafür.
Ich sach ma' so: Du willst aus einem String eine Zeichenkettenkombination rausfischen, die man folgendermaßen beschreiben könnte:
1. Sie beginnt mit einer Zahl (eine oder mehrere Ziffern).
2. Sie enthält als nächstes ein Minus "-".
3. Sie enthält als letztes wiederum eine Zahl (mit einer oder mehreren Ziffern).
Das sieht, in ein PCRE-Suchmuster umgesetzt, so aus:
'/\d+\-\d+/'
Die Erklärung dazu:
'\d' eine Ziffer
'+' das vorherige Muster ein oder mehrere Mal
'-' das Minus
Statt '\d' kann man auch '[0-9]' schreiben, das würde dann eine Zeichenklasse definieren, die die Ziffern von 0 bis 9 enthalten darf.
Jetzt machen wir PHP-Code draus:
$heuhaufen = 'abcdefghijklmn98-20ogfkerdfnsdmsdfg';
if( !preg_match('/\d+\-\d+/', $heuhaufen, $rx_matches) ) {
print('Nichts gefunden');
}
else {
print('Ich habe ein Muster entdeckt!');
// Das Array mit dem/den gefundenen Muster(n) ausgeben
print_r($rx_matches);
}
Wichtige Information zum Thema reguläre Ausdrücke (PCRE) findest du auf den folgenden Seiten:
http://regexp-evaluator.de/tutorial/
http://www.php-resource.de/tutorials/read/10/1/
Wikibook: Websiteentwicklung/PHP/Reguläre_Ausdrücke
PCRE.org (englisch)
und im PHP-Handbuch:
PCRE-Suchmuster-Syntax
PCRE-Suchmuster-Modifikatoren
MffG
EisFuX
echo $begrüßung;
{test}01-23{test}
Aus diesem String möchte ich jetzt nur "01-23" auslesen. {test} ist jedoch immer unterschiedlich lang.Kann mir einer helfen, ich weiss echt nicht, wie ich das lösen soll.
Finde das erste "}" beginne den String am folgenden Zeichen auszuschneiden. Ende am "{" welches nach der Position des ersten "}" im String vorkommt. substr() und strpos() sind zwei dafür geeignete Funktionen.
echo "$verabschiedung $name";