webForumDet fria alternativet

Nte förekomsten av sträng i sträng

PHP

3 svar · 251 visningar · startad av Mr. N.

Medlem sedan sep. 20025 506 inlägg
Frågan#1

Jag skulle behöva veta när den nte förekomsten av någonting inträffar i en lång sträng, alltså t ex vid vilken position den åttonde förekomsten av "hej" finns i en sträng.
Jag försökte med regexp men fick aldrig till det riktigt.

Medlem sedan juni 20015 009 inlägg
#2

Om du splittar upp stringen med explode sen loopar du igenom alla bitar och jämför med ditt ord, hittar den ordet så ökar den en räknare med ett.

Något sådant du är ute ungefär?

Medlem sedan juni 20034 013 inlägg
#3

Använd funktionen strpos. Den har en för dig användbar tredje parameter som heter offset. Typ så här:

<?php
  $result = array();
  $str = "din jättelånga sträng";
  $sok = "det vi ska leta efter";
  $pos = 0;
  while (($pos = strpos($str, $sok, $pos)) !== false)
    $result[] = $pos++;
?>

Den åttonde positionen hittar du nu i $result[7].

(Förresten måste man nog öka $pos så den inte hittar samma position om och om igen.)
(Parenteser behövs också runt tilldelningen.)

Medlem sedan sep. 20025 506 inlägg
#4

Wunderbar!

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)