Positionen eines Suchstrings zurückgeben, ähnlich strpos?!
Tester
- php
Hallo,
wie kann ich bei PHP die Positionen(!) von einem Suchstring (in einem anderen String) zurückgeben? Strpos liefert immer nur die erste Position, gibts was ähnliches, ohne Strpos aufwendig zu verschachteln?
Danke!!
Hallo,
das geht mit preg_match_all() mit der Einstellung PREG_OFFSET_CAPTURE
Oder auch mit explode(), strlen() und ein bisschen Rechnen.
Außerdem könntest Du auch noch eine eigene Funktion schreiben. Die würde aber bestimmt am längsten dauern.
Viel Ergolg
Tom
Hallo,
das geht mit preg_match_all() mit der Einstellung PREG_OFFSET_CAPTURE
Es will nicht so wie ich will .. der Quellcode sieht jetzt so aus:
$as='abc abcde cde';
preg_match_all ("/c/", $as, $out);
echo count($out); //sollte 3 sein ?!
Wohin kommt preg_offset_capture? Als Argument nach $out wird es jedenfalls nicht angenommen.
Eigentlich sollte jetzt sowas wie
$out[0] == 2
$out[1] == 6
$out[2] == 10
im Array stehen. Langsam werd ich ganz konfus *g*, was mach ich falsch?
Tester
Hallo,
preg_match_all ("/c/", $as, $out, PREG_PATTERN_ORDER + PREG_OFFSET_CAPTURE);
versuchs mal so.
Tom
Hallo,
preg_match_all ("/c/", $as, $out, PREG_PATTERN_ORDER + PREG_OFFSET_CAPTURE);
versuchs mal so.
$as='abc abcde cde';
preg_match_all ("/c/", $as, $out, PREG_PATTERN_ORDER + PREG_OFFSET_CAPTURE);
Nach hin und herprobieren kam ich auf das gewünschte:
echo $out[0][0][1].'<br>'; liefert 2
echo $out[0][1][1].'<br>'; liefert 6
echo $out[0][2][1].'<br>'; liefert 10
Bleibt diese Schachtelung so und wieso ist sie so tief?
Prinzipiell würde es mir aber so reichen wenn die Struktur auch bei anderen Suchstrings so bleibt.
Tom
Tester