(Hallo|Hi(ho)|Tag) marie,
hi
es geht um folgende Funktion:
int strpos ( string $haystack, mixed $needle [, int $offset] )$needle darf ja bekanntlich ein einzelnes zeichen oder auch eine zeichenkette sein.
Bsp:
$meinString = 'abcdef';
$findMich = 'c';
$pos = strpos($meinString, $findMich);jetzt mein proplem:
ich will im string 'abcdef' die Position des ersten 'c' ODER 'b'
also je nach dem welches zeichen zuerst kommt.
Versuchs mal mit preg_match():
// zwischen den eckigen Klammern sind beliebige Buchstaben ergänzbar
$nadel = '/[bc]/';
$gefunden = preg_match($nadel, $heuhaufen, $treffer, PREG_OFFSET_CAPTURE);
if ($gefunden) {
$pos = $treffer[0][1];
...
}
else {
...
}
Bei Suchstrings (also "Nadeln"), die länger als ein Zeichen sind, muss $nadel allerdings etwas abgeändert werden:
$nadel = '/(nadel1|nadel2|nadel3)/';
Hilfreich zum Verständnis von preg_match() und (seinen|ihren) Verwandten ist auf alle Fälle das Kapitel Reguläre Ausdrücke im PHP-Handbuch.
Empfehlenswert ist das Tutorial zum RegExp-Evaluator.
Aber auch Wikipedia und Google dürften am Anfang weiterhelfen können.
Mit 'OR' geht nicht:
Doch, das ginge auch ...
$pos = strpos(abcdef, 'a' OR 'b');
Aber so natürlich nicht. Eher so:
if (
( strpos($heuhaufen, $nadel_a) !== FALSE ) OR
( strpos($heuhaufen, $nadel_b) !== FALSE )
) {
// gefunden
...
}
else {
// nicht gefunden
...
}
Ich denke aber, dass die Variante mit preg_match() für mehr als zwei Such-Zeichen(ketten) einfacher anzuwenden ist.
MffG
EisFuX