Formulareingabe mit Array Inhalt vergleichen?

D-LuX

Erfahrenes Mitglied
Hey Ho,

ich versuche mich heute mal an Array´s!
Habe jetzt die PLZ in einem Array festgelegt und kann diese auch ausgeben.

Jetzt möchte ich aber wenn ein User z.B. in das Formular 8888c eingibt,
ihm nicht nur sagen, dass die Angabe falsch war, sondern was genau.
Sprich echo " c ist nicht im array plz enthalten"

Steh grad aufm Schlauch ..
Hier mein bisheriger Code ..

PHP:
$plz  = array("0","1", "2", "3", "4", "5", "6", "7", "8", "9");

 if (in_array("5", $plz)) {
    echo "<br>5 ist vorhanden.<br>";
  } else {
    echo "5 konnte nicht gefunden werden";
  }
 
Zuletzt bearbeitet:
du könntest mit is_numeric überprüfen, ob in der Variable nur Zahlen vorkommen, und ich würde als Ausgabe dann einfach sagen, bitte nur Ziffern. Übrigens bei dir oben fehlt die 0 ;)
 
Ja, so hatte ich es vorher ja mit is_numeric oder ctype_digit und für Namenfelder ctype_alpha

Aber ich möchte es gerne wie oben beschrieben haben ..
Gibt es da nicht mit Hilfe von if Abfragen eine Möglichkeit?

Würd gerne das falsche zeichen exakt bestimmen ..

If $_POST[plz] ein Wert != Array = diesen ausgeben?
Man müsste vermutlich jede Zahl mit dem array vergleichen ..
 
PHP:
<?php
$plz = "42329";

if(strlen($plz) == 5) 
{
foreach(str_split($plz) as $val) {
  if(!is_numeric($val))
    $error[] = $val." ist keine gültige Zahl";
}
}
else
{
    $error[] = "Die PLZ hat keine 5 Stellen";
}

if(count($error) > 0) 
{
  foreach($error as $val) 
    echo $val;
}
?>
 
Oder du prüfst mit preg_match(); ob es eine gültige Postleitzahl ist (5 Ziffern hintereinander). Die Regex müsste dann ungefähr so aussehen
[0-9]{5}
ohne Garantie...


edit: na toll... da refresht man seine seite mal 5 minuten nicht...
 
Zuletzt bearbeitet:
Oder du prüfst mit preg_match();
ob es eine gültige Postleitzahl ist (5 Ziffern hintereinander). Die Regex müsste dann ungefähr so aussehen
[0-9]{5}
Das hatte ich auch schon also mit eregi ...aber er soll ja genau sagen, welches das falsche Zeichen war ...

PHP:
<?php
$plz = "42329";

if(strlen($plz) == 5) 
{
foreach(str_split($plz) as $val) {
  if(!is_numeric($val))
    $error[] = $val." ist keine gültige Zahl";
}
}
else
{
    $error[] = "Die PLZ hat keine 5 Stellen";
}

if(count($error) > 0) 
{
  foreach($error as $val) 
    echo $val;
}
?>
da bekomm ich folgende Fehlermeldung
Fatal error: Call to undefined function: str_split()
Gibt es auch ne Lösung um das in PHP 4.0 zu lösen?
 
PHP:
<pre>
<?php
$plz = "4ccc4";

if(strlen($plz) == 5) 
{
for($i = 0; $i < strlen($plz); $i++) {
  if(!is_numeric($plz{$i}))
    $error[] = $plz{$i}." ist keine gültige Zahl<br/>";
}
}
else
{
    $error[] = "Die PLZ hat keine 5 Stellen";
}

if(count($error) > 0) 
{
  foreach($error as $val) 
    echo $val;
}
?>
</pre>
So gehts auch und sollte PHP4 valide sein.
 
Probier es mal mit der Funktion:
PHP:
<?php
function str_split($text, $split = 1)
{
    if (!is_string($text)) return false;
    if (!is_numeric($split) && $split < 1) return false;   
    $len = strlen($text);   
    $array = array();   
    $i = 0;
    while ($i < $len)    {
        $key = NULL;
        for ($j = 0; $j < $split; $j += 1)   {
            $key .= $text{$i};
            $i += 1;   
        }
        $array[] = $key;
    }
    return $array;
}
 
PHP:
<pre>
<?php
$plz = "4ccc4";

if(strlen($plz) == 5) 
{
for($i = 0; $i < strlen($plz); $i++) {
  if(!is_numeric($plz{$i}))
    $error[] = $plz{$i}." ist keine gültige Zahl<br/>";
}
}
else
{
    $error[] = "Die PLZ hat keine 5 Stellen";
}

if(count($error) > 0) 
{
  foreach($error as $val) 
    echo $val;
}
?>
</pre>
So gehts auch und sollte PHP4 valide sein.

Danke, ja funktioniert ...
Jetzt muss ich da nur noch durchsteigen ..damit ich auch weiß was ich da verzapfe ;)

@tobee: dir auch ein dickes Danke! Als Funktion werd ich es bestimmt auch noch brauchen!!
 
Zurück