Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[php] str_replace maar dan andersom

Annie
3 antwoorden
  • Ik heb een string, en ik heb een array die vol staat met karakters die NIET toegestaan zijn. Als ik alle karakters die in die array staan uit de string wil halen is dat heel gemakkelijk:
    $nieuwe_string = str_replace($array_met_karakters, "", $oude_string);

    Maar nu andersom:

    Ik heb een string, en ik heb een array die vol staat met karakters die WEL toegestaan zijn. Nu wil ik alle karakters die NIET in die array voorkomen uit de string worden gehaald. Hoe kan ik dat het beste doen?

    Ik zat er aan te denken om die string karakter per karakter te checken (hoe doe ik dat? Substr() lijkt me wat omslachtig?) en dan met not in_array() te kijken of het karakter is toegestaan, en zo ja, die op te tellen bij de nieuwe string… Maar dat kan vast simpeler… Suggesties?
  • Ik kan zo snel 2 mogelijkheden verzinnen.

    [code:1:f00cf9ef45]
    // stel je wil alleen de characters abc toestaan.
    // $b is de string die moet worden nagekeken

    $result = preg_replace('([^abc])', '', $b);
    // of als je per se vanuit een array wil werken
    $a = array('a', 'b', 'c');
    $result = preg_replace('([^'.join($a,'').'])', '', $b);


    // andere optie
    for ($i = 0; $b[$i]; $i++)
    $c[] = in_array($b[$i], $a) ? $b[$i] : '';

    $result = join($c, '');
    [/code:1:f00cf9ef45]

    Hopelijk kan je hier wat mee.
  • Ja daar heb ik zeker wat aan. Bedankt, ik heb die laatste gebruikt. Ik had toen ik nog C++ programmeerde wel eens gezien dat een string gewoon een array van karakters was, maar ik wist niet dat je daar ook met php op die manier doorheen kon 'bladeren'.

    Welke zou sneller zijn? De preg_replace of de str_replace? De preg_replace is normaal gesproken langzamer, maar die wordt in dit voorbeeld maar 1x uitgevoerd, terwijl de str_replace net zo vaak wordt uitgevoerd als het aantal karakters in de orginele string.

    Ik ben zelf niet zo'n voorstander van een if-else notatie met een ? en een : omdat ik dan altijd na moet denken wat er ook alweer precies staat, maar daar wen je waarschijnlijk wel aan. Het is natuurlijk wel een stuk korter dus er valt zeker wat voor te zeggen.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.