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

    PHP: alle ongewenste tekens uit string weggooien

    Hoe gooi ik in PHP alle tekens uit een string weg die ik niet wil.
    Enkel A-Z, a-z, spatie, -, en éèë etc (de in het nederlands gebruikte accenttekens) mogen blijven.
    De verkeerde invoer moet er dus echt uit.
    Ik zit al naar sanitize functies te kijken, maar die lijken niet custom genoeg.

    Bijdrager
    Jakko Westerbeke

    Zo misschien?

    $gewenst = "ABCenz”; // String met alle tekens die wel mogen
    for ($n=0; $n < strlen($invoer); $n++) {
    	$huidigteken = substr($invoer, $n, 1);
    	if (strpos($invoer, $huidigteken)) {
    		$uitvoer .= $huidigteken;
    	}
    }

    (Let op: niet getest — de kans is redelijk dat er wat kleine foutjes in zitten :))

    Bijdrager
    computer space
    Jakko op 15 januari 2014

    Zo misschien?

    $gewenst = "ABCenz”; // String met alle tekens die wel mogen
    for ($n=0; $n <= strlen($invoer); $n++) {
    	$huidigteken = substr($invoer, $n, 1);
    	if (strpos($gewenst, $huidigteken)) {
    		$uitvoer .= $huidigteken;
    	}
    }

    (Let op: niet getest — de kans is redelijk dat er wat kleine foutjes in zitten :))

    Zoiets werkt i.d.d. alleen heel vreemd, de letter a wordt eruit geknikkerd!

    Bijdrager
    computer space

    Het heeft te maken dat als a de eerste is in de lijst, strpos als resultaat 0 geeft.
    En 0 staat gelijk aan FALSE!
    Raar!
    Op te lossen door als eerste een teken te gebruiken dat toch niemand typt.

    Bijdrager
    Nielsvr

    dan moet je een cast vergelijking doen

    dus strpos($gewenst, $huidigteken) !== false

    Overigens kan je hier beter een REGEX voor gebruiken (google)

    Bijdrager
    computer space

    Kon Google maar Reguliere expressies maken. Blijft zo’n enorm K-ding om te snappen. Ik was daar ook eigenlijk naar op zoek, bovenstaande manier zou ik zelf als noodgreep doen. Aan de andere kant lees ik wel dat reguliere expressies ook weer erg traag zijn.

    Bijdrager
    koen

    Hier kun je regex uitproberen: http://www.regular-expressions.info/

    Bijdrager
    Jakko Westerbeke
    computer op 15 januari 2014

    En 0 staat gelijk aan FALSE!
    Raar!

    Zo’n vermoeden had ik inderdaad al, maar zie de oplossing van Niels.

    computer op 15 januari 2014

    Op te lossen door als eerste een teken te gebruiken dat toch niemand typt.

    Dat werkt wel, maar is niet zo’n nette manier om het probleem op te lossen — want wat als iemand dat teken toevallig wél typt?

    Nielsvr op 15 januari 2014

    Overigens kan je hier beter een REGEX voor gebruiken (google)

    Dat vraag ik me een beetje af … ik zie niet zo goed in wat een regex hier zou doen dat strpos() niet kan.

    Of bedoel je een totaal andere manier om de string te ontdoen van ongewenste tekens?

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.