Hallo,
Hintergrund: Ich habe eine Variable ¶meters, in der sowas steht:
cPath=55_3&nochwas=76&nochwas1=444...
oder
cPath=2&nochwas=76&nochwas1=444...Ich brauche immer den Inhalt von cPath und hiervon nur den ersten Teil.
Also beim ersten Beispiel die 55
beim zweiten die 2kann mir jemand einen Tip geben, wie ich am besten vorgehe??
Korrektur:
Du suchst also in einem Variableninhalt nach folgendem Muster
- die Zeichenfolge cPath=
- gefolgt von einer beliebigen Anzahl von Ziffern,
die Du Dir merken möchtest
- was weiter folgt, interessiert Dich nicht, denn reguläre Ausdrücke
sind standardmäßig gierig und finden möglichst viel.
Umgesetzt in PHP:
<?php
$matches = array(); // Array für die Treffer
$haystack = '&foo=16&cPath=17_4&bar'; // Zeichenkette, in der wir suchen
$pattern = '~cPath=([0-9]+)~'; // Muster für die Suche
/*
Erläuterung:
~ verwende ich hier als [link:http://de3.php.net/manual/de/regexp.reference.delimiters.php@title=Delimiterzeichen]
cPath= Auftreten der Zeichenfolge cPath=,
([0-9]+) gefolgt von einem oder mehreren Ziffern,
die Klammern sorgen für ein [link:http://de3.php.net/manual/de/regexp.reference.subpatterns.php@title=Teilmuster],
dessen Treffer gemerkt werden.
~ Musterende
Anmerkung: falls keine Ziffer folgt, beispielsweise
bei cPath=baz, dann gibt es keinen Treffer
Ist dann die leere Zeichenkette gewünscht,
verwende den [link:http://de3.php.net/manual/de/regexp.reference.repetition.php@title=Quantifier] * statt +
Hinweis: preg_match stoppt nach dem ersten Treffer.
*/
$match = [link:http://de3.php.net/manual/de/function.preg-match.php@title=preg_match]($pattern, $haystack, $matches);
// Es folgt eine Debug-Ausgabe:
if ($match > 0) {
echo "<pre>\n";
print_r($treffer);
echo "</pre>\n";
}
/* gibt folgendes aus:
Array
(
[0] => cPath=17_4&bar
[1] => 17
)
*/
?>
Freundliche Grüße
Vinzenz