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

    [PHP] Zoeken + vervangen door ander

    Hey,

    Heb een php probleempje.
    Ik heb een string met allerlei woorden in:

    [code:1:ae67f6b905]$str = "ok nee ok je ok nee soms je nee nee";[/code:1:ae67f6b905]

    Er staat 3x ok in, ik zou graag willen dat dit zo wordt;

    eerste ok = ok1
    2de ok = ok2
    3de ok = ok3

    Iemand een idee?

    Bijdrager
    DarkRaverNL

    str_replace(“ok”, “ok1”, $str);

    syntax zal niet helemaal juist zijn, maar zo kan je dingen vervangen met iets, alleen weet ik niet hoe je ze alle 3 naar ok1 ok2 ok3 etc doet…

    Bijdrager
    freshface

    str_replace is het:)
    Ik dacht ondertss een loopje te laten lopen.

    $c += 1
    if ($c == 3){ $c == 0; }

    En dat dan in de str_replace verwerken, maar het lukt niet echt.

    Bijdrager
    DarkRaverNL

    Ja ik had het al aangepast, kan je mischien niet iets met explode(); doen, dat je het eerst opdeelt ofzo hmm.. bijv tussen elk woord, in een array zet…

    Bijdrager
    freshface

    Ik zou van deze structuur, dit zit in een string.

    [code:1:365d334a93]<div class="row"><div class="box">2005-2-22</div>

    <div class="box">alle klassen</div>

    <div class="box">Met behulp van een nieuwe online ICT-service, bereikbaar op http://www.arteveldehs.be/emc.asp?pageId=1391, kan je je persoonlijke Arteveldehogeschool account (email, login en paswoord) opvragen.</div>

    </div>
    <div class="row"><div class="box">2005-9-19</div>

    <div class="box">alle klassen</div>

    <div class="box">Pauze lectoren en medewerkers: van 12 uur tot 12.30 uur.Vanaf 12.30 uur staan zij terug ter jullie beschikking! </div>

    </div>[/code:1:365d334a93]

    Naar deze moeten geraken:

    [code:1:365d334a93] <h3 class="display"><a href="#">Datum + alle klassen</a></h3>
    <div class="stretcher">
    De inhoud.
    </div>

    <h3 class="display"><a href="#">Datum + alle klassen</a></h3>
    <div class="stretcher">
    De inhoud.
    </div>

    <h3 class="display"><a href="#">Datum + alle klassen</a></h3>
    <div class="stretcher">
    De inhoud.
    </div>[/code:1:365d334a93]

    Maar het lijkt me onmogelijk.

    Bijdrager
    ciaumb

    voor je eerste vraag:

    [code:1:dc24ebadb9]

    <?php
    $str = "ok nee ok je ok nee soms je nee nee";
    $woorden = explode (" ", $str);

    $aantal = 1;
    for ($index=0; $index < count($woorden); $index++ ){
    if ($woorden[$index] == "ok"){
    $woorden[$index] = "ok" . $aantal;
    $aantal++;
    }
    }

    $nieuw = implode(" ", $woorden);
    print($nieuw);

    ?>

    [/code:1:dc24ebadb9]

    een kortere manier zal wel kunnen

    Bijdrager
    freshface

    Thx ciaumb.
    Jouw voorbeeld werkt, maar met mijn string niet.

    Het gaat dan om deze tekst:
    [code:1:c188194956]
    <div class="row"><div class="box">2005-2-22</div>

    <div class="box">alle klassen</div>

    <div class="box">Met behulp van een nieuwe online ICT-service, bereikbaar op http://www.arteveldehs.be/emc.asp?pageId=1391, kan je je persoonlijke Arteveldehogeschool account (email, login en paswoord) opvragen.</div>

    </div>
    <div class="row"><div class="box">2005-9-19</div>

    <div class="box">alle klassen</div>

    <div class="box">Pauze lectoren en medewerkers: van 12 uur tot 12.30 uur.Vanaf 12.30 uur staan zij terug ter jullie beschikking! </div>

    </div>[/code:1:c188194956]

    die $output noemt, en dan heb ik ok door box vervangen.

    Bijdrager
    ciaumb

    Wil je telkens de inhoud van je ‘class’ tag veranderen?

    ‘k Volg dus niet meer met de bedoeling.

    Bijdrager
    freshface

    Binnen de div row heb je 3 keer het woord box staan.
    De eerste box moet dus box1 worden, de 2de box2 ….

    Bijdrager
    DarkRaverNL

    Als je dat dan met PHP echo” doet dan kan je gewoon zetten class=”box$aantal” of iets:)

    Bijdrager
    ciaumb

    Met geneste lussen werken.

    Bijvoorbeeld:
    controle op string ‘<div class=”row”>’
    als die gevonden wordt:
    teller terug op 0 en dan de test op de box
    test op box en vervangen indien gevonden

    wel de woorden laten optellen bij de eerste lus,
    anders resulteert het in een oneindige lus.

    Zoiets kan :)

    Meer denkwerk zal wel een beter resultaat opleveren…

    viso groeten (geen kennis, enkel zelfde school)

    Bijdrager
    inactiveaccount
    Bijdrager
    Hans.

    zoiets??

    [code:1:b51d6b9a4a]$array=explode(’box’,$string);
    $string.=$array[0]."box1".$array[1];
    $string.="box2".$array[2];
    $string.="box3".$array[3];
    [/code:1:b51d6b9a4a]

    Ik weet niet of het werkt, maar zoiets zou wel kunnen.

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

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