8 berichten aan het bekijken - 1 tot 8 (van in totaal 8)
  • Q:
    Bijdrager
    freshface

    [PHP] strpos van x-te woord.

    Hey,

    Ik heb een string met verschillende woorden

    [code:1:39d2f51fef]$string = "hallo wereld hallo wereld boe aaa hallo";[/code:1:39d2f51fef]

    Nu wil ik bv de positie strpos van het 2de “hallo” woord.
    Iemand een idee?

    Bijdrager
    inactiveaccount

    kijk eens naar de derde optionele parameters van strpos (offset):)

    Bijdrager
    freshface

    Heb ik getest maar deed het niet echt goed.
    Ik zal nog eens proberen.

    Bijdrager
    freshface

    Het werkt, ik dacht dat de offset werkte met reeds gevonden woorden.
    Maar het werkt met reeds gevonden characters.

    Bijdrager
    inactiveaccount

    tip? De offset is niet ‘2’ van 2e keer dat het voorkomt maar de positie waar hij moet beginnen met zoeken – dus de locatie van de 1e keer hallo.

    -edit
    Laat maar je hebt het al:)

    Bijdrager
    freshface

    Mocht er toch iemand een functie hebben om de pos van het x-te zelfde woord te vinden zou dit wel handig zijn.
    De offset is niet echt correct.

    Bijdrager
    @GHB

    Wat je zou kunnen doen is het volgende:
    Een loop maken voor het zoeken naar een var met strpos. Deze positie opslaan en de volgende keer dat je in de loop komt moet je vanaf die strpos verder zoeken. En dit doe je een x-aantal keer, z is afhankelijk van het hoeveelste woord je zoekt.

    [code:1:91289ae462]
    $strSearch = "Hallo ik ben @GHB, hallo hallo!";
    $intWordCount = 2; //Het hoeveelste woord moeten we zoeken?
    $strWord = ‘Hallo’; //Het woord waarnaar we zoeken

    $intStartPos = -1; //Offset die geset wordt (-1 alleen voor de eeste keer, hij wordt direct opgehoogd) Als er een woord gevonden heeft moet hij +1 doen anders vind hij altijd hetzelfde woord

    for ($i=0; $i < $intWordCount; $i++) {
    $intStartPos = strpos(strtolower($strSearch), strtolower($strWord), $intStartPos+1);
    }

    if ($intStartPos === false) {
    echo "Niet gevonden";
    } else {
    echo "Gevonden op ".$intStartPos;
    }
    [/code:1:91289ae462]

    Succes!

    Bijdrager
    freshface

    Thx, het werkt.
    De oplossing was zo simpel.

8 berichten aan het bekijken - 1 tot 8 (van in totaal 8)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.