phpbar.de logo

Mailinglisten-Archive

[php] leere Zeichenketten filtern

[php] leere Zeichenketten filtern

Peter Bieling net2 at media-palette.de
Mit Jan 31 09:44:31 CET 2007


Hallo Sebastian,

nur eine kleine Korrektur. Ich gehe mal davon aus, dass Du das sonst 
richtig machst.

Sebastian Mendel wrote:

> du willst das ein String bestehend nur aus Leerzeichen genauso als 
> Leer/Falsch eingestuft wird wie ein tatsächlich leerer String, oder?
> 
> dann ist trim() genau das was du suchst
> 
> $blah = '    ';
> $blah = trim($blah);
> if (! empty($blah)) {
>      // $blah hat inhalt
> }

Für den Fall, dass $blah auf jeden Fall definiert ist, kann man sich das 
empty doch sparen. empty ist dafür da, zu prüfen, ob die Variable, 0 
oder false oder nicht definiert ist. Dies reicht:

if (!trim($blah)) {
     $errors[] = "Kein Blah!";
}

Ansonsten gibt es eine Notice, wenn man versucht ein nicht vorhandenes 
$blah zu trimmen: Notice:  Undefined variable:  blah in ...

Als Tipp an Sven:
Bei Formulardaten mache ich das so (falls ich das zu Fuß mache):
$f_blah = ''; (f steht für Formularfeld)
if (isset($_POST['blah'])) {
     $f_blah = $_POST['blah'];
     if (!trim($f_blah) {
         $errors[] = "Kein Blah!";
     } else {
         //$f_blah validieren
     }
}

Auf jeden Fall sollte man die POST-Variable anders benennen, als sie bei 
einer eventuell vorhandenen register_globals-Einstellung heißen würde, 
um Verwirrungen oder Fehlerquellen zu vermeiden.

Hat man viele Request-Variablen zu prüfen, sollte man das Verfahren 
automatisieren, indem man einer Validierungsklasse sagt, welche 
Variablen man erwartet und welche Validierungen darauf anzuwenden sind.
Als Rückgabe erhält man dann die "gereinigten" Daten und/oder die 
Fehlermeldungen.

> oder besser (falls 0 als Eingabe erlaubt ist):
> 
> if (isset($blah) && strlen($blah)) {
>      // $blah hat inhalt
> }

Hier das gleiche Problem. isset gehört an den Anfang.

Viele Grüße

Peter

-- 
http://www.media-palette.de/

php::bar PHP Wiki   -   Listenarchive