MarcusMüller
New member
Hallo Leute,
ich bin PHP-Anfänger und wollte meine Kenntnisse etwas erweitern. Daher habe ich als Übung einen PHP Code geschrieben, der mir nicht das erste Vorkommen eines substrings (wie in Strpos) liefert, sondern das x.-Vorkommen. Das ganze hat auch alles wunderbar funktioniert, allerdings konnte man als gesuchtes Vorkommen ($posx) auch eine 5000 eingeben, auch wenn der String den Substring gar keine 5000x enthielt (er ist den String dann halt wieder von neu durchgegangen). Daher habe ich mir gedacht, baue ich in die while-Schleife eine if-Klausel ein, die besagt, dass die Schleife abbrechen soll, wenn das gesuchte Vorkommen kleiner als die Anzahl des Substrings in dem String ist. Das Problem -> es funktioniert leider nicht. Was mache ich falsch? Habe bereits alles Mögliche ausprobiert (ohne das break etc.). Hier der Code:
Erklärung der Codes:
Der Code ist nicht anderes als der folgende Code nur halt alles in einer Schleife:
Grüße und Danke, Marcus
ich bin PHP-Anfänger und wollte meine Kenntnisse etwas erweitern. Daher habe ich als Übung einen PHP Code geschrieben, der mir nicht das erste Vorkommen eines substrings (wie in Strpos) liefert, sondern das x.-Vorkommen. Das ganze hat auch alles wunderbar funktioniert, allerdings konnte man als gesuchtes Vorkommen ($posx) auch eine 5000 eingeben, auch wenn der String den Substring gar keine 5000x enthielt (er ist den String dann halt wieder von neu durchgegangen). Daher habe ich mir gedacht, baue ich in die while-Schleife eine if-Klausel ein, die besagt, dass die Schleife abbrechen soll, wenn das gesuchte Vorkommen kleiner als die Anzahl des Substrings in dem String ist. Das Problem -> es funktioniert leider nicht. Was mache ich falsch? Habe bereits alles Mögliche ausprobiert (ohne das break etc.). Hier der Code:
PHP:
<?php
$string1 = "Holhhhhlahloplp";
$what = "l"; // gesuchter Substring
$posx = 4; // gesuchtes Vorkommen
$i = 0;
$pre = 0; // without possible -> but warning
while($i <= $posx -1) {
if($posx > substr_count($string1, $what)){
$pos = "Es gibt kein " . $posx . ". " . $what . " in dem String \"" . $string1 . "\"";
break;}
else{
$pos = strpos($string1, $what, $pre);
$pre = $pos + 1;
$i++;}}
Erklärung der Codes:
Der Code ist nicht anderes als der folgende Code nur halt alles in einer Schleife:
PHP:
<?php
$string1 = "Holhhhhlahloplp";
$what = "l";
$pos1 = strpos($string1, $what);
$pos2 = strpos($string1, $what, $pos1 + 1);
$pos3 = strpos($string1, $what, $pos2 + 1);
$pos4 = strpos($string1, $what, $pos3 + 1);
echo $pos4;?>
Grüße und Danke, Marcus
Zuletzt bearbeitet: