Versio

FilterLib

Om mijn vorige post (validatie) compleet te maken wil ik ook graag nog een FilterLib toevoegen.
Deze lijkt erg veel op de CheckLib met het verschil dat de FilterLib een meegestuurde string stript van ongewenste tekens.

Heb deze class snel in elkaar gezet, deze is niet helemaal compleet, maar geeft denk ik wel mooi aan wat de mogelijkheden zijn :).

Voorbeeld:

$p_sString = 'straatnaam 34';
echo FilterLib::filter_digits($p_sString);.
Geeft 34 terug.

Ik wil deze class gebruiken als aanvulling op de inputvalidator.

Gesponsorde koppelingen

PHP script bestanden

  1. FilterLib.class.php

 

14 reacties op 'FilterLib'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jelmer rrrr
Jelmer rrrr
2 jaar geleden
 
0 +1 -1 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$p_bWhitespace = (boolean) $p_bWhitespace;
// check whether whitespaces are allowed
if (is_bool($p_bWhitespace) and $p_bWhitespace === true) {

Meest onzekere programmeur ooit?
Arjan -
Arjan -
2 jaar geleden
 
1 +1 -0 -1
@Jelmer: Inderdaad, de if($p_bWhitespace === true) zorgt er al voor dat zowel naar het type (boolean) als naar de waarde wordt gekeken. Heel veel onnodige codes dus. Desalniettemin zal het wel werken.
Mark Eilander
Mark Eilander
2 jaar geleden
 
0 +1 -0 -1
De reden dat het er staat, is dat er uit bijvoorbeeld een POST altijd een string terug komt.

Om de een of andere reden is de waarde true of 1 dan niet meer een boolean true. Vandaar dat ik de waarde eerst omzet naar een boolean om deze vervolgens door de check te gooien. In 99.99% van de gevallen zal het inderdaad overbodig zijn. Toch lijkt het in sommige gevallen nodig te zijn :).

Toch bedankt voor de 'opbouwende' kritiek!

EDIT::
Heb even een kort voorbeeldje gefabriceerd:
$text = 'true';
var_dump((boolean) $text);
var_dump($text);
if ($text === true) {
echo '<br />true zonder typecast';
}

if ((boolean)$text === true) {
echo '<br />true met typecast';
}
resultaat:
bool(true) string(4) 'true'
true met typecast
Chris
Chris
2 jaar geleden
 
0 +1 -0 -1
Als het goed is werkt het op deze manier ook, en íets sneller (al zal je het niet snel merken..)
Jelmer rrrr
Jelmer rrrr
2 jaar geleden
 
0 +1 -0 -1
Het feit dat je iets eerst expliciet cast naar een boolean, en vervolgens dubbel gaat controleren of het specifiek een boolean is. Simpelweg if($p_bWithespace) doet _exact_ hetzelfde hier. De if-constuctie wil boolean, dus $p_bWhitespace wordt gecast naar boolean.
Mark Eilander
Mark Eilander
2 jaar geleden
 
0 +1 -0 -1
@ Chris: ja, die !empty functies werken iderdaad ook prima.
Let wel op dat een string 0 of een int 0 ook als leeg gezien zullen worden door deze functie.
http://nl3.php.net/manual/en/function.empty.php

Dus alleen een string 0 meegegeven aan deze funtie resulteerd in een lege return value :).

Vandaar mijn keuze voor:
is_string($p_sParameters) and trim($p_sParameter) != ''
Chris
Chris
2 jaar geleden
 
0 +1 -0 -1
@Mark: De mijne had een fout, heb hem dus verwijderd om niet het foute voorbeeld te geven.

Wat jij doet is dubbelop, omdat het al een string is. Je kan dus de is_string weglaten.
Mark Eilander
Mark Eilander
2 jaar geleden
 
0 +1 -0 -1
@Jelmer:
Zoals in het voorbeeld aangegeven kan ik als eerste parameter een string true meegeven. Als ik vervolgens de check doe $p_bWhitespace === true zal deze false geven omdat het type niet boolean is! Vandaar de typecasting.

De extra functie is_bool vooraan kan wel weg uit de if.
Jelmer rrrr
Jelmer rrrr
2 jaar geleden
 
0 +1 -0 -1
Maar waarom checken met === true?
Mark Eilander
Mark Eilander
2 jaar geleden
 
0 +1 -0 -1
@chris: je hebt helemaal gelijk, deze kan inderdaad weg :). Hij staat daar eigenlijk alleen maar om de typecast te controlleren. Welke waarschijnlijk altijd goed zal gaan.
Mark Eilander
Mark Eilander
2 jaar geleden
 
0 +1 -0 -1
@ Jelmer:
Aaaah! Snap nu wat je bedoeld :).

Puur uit gewoonte, ik controleer of de typecast is gelukt.
De verwerkingstijd van deze functies zijn zo laag dat ik het altijd extra erbij doe.
Richard van Velzen
Richard van Velzen
2 jaar geleden
 
0 +1 -0 -1
Quote:
Zoals in het voorbeeld aangegeven kan ik als eerste parameter een string true meegeven.

Ja, je kunt 'true' meegeven, maar ook 'blaat', 'omg', 'false' enzovoorts en dit is allemaal ook gewoon true.

Ik zou het simpel houden en gewoon checken op de ge-coercede waarde (if($whitespace)).
Mark Eilander
Mark Eilander
2 jaar geleden
 
0 +1 -0 -1
@ Richard van Velzen:
Kwam gisteren tot dezelfde conclusie.

Heb daarom gekozen voor constanten die ik wel op type check.

Heb de meegestuurde code gewijzigd!
Dit is ook de oplossing die ik normaal zou gebruiken, maar zoals eerder aangegeven heb ik nog niet de tijd gehad het script helemaal af te maken.
Mark Eilander
Mark Eilander
2 jaar geleden
 
0 +1 -0 -1
Blijft validatie niet ook een kwestie van smaak?

De manier waarop je valideert is niet van belang, maar dat de validatie doet wat bedoeld is :).

Om te reageren heb je een account nodig en je moet ingelogd zijn.