Bernd: !in_array

Hallo,

was mache ich hier falsch?


$erlaubteMailAdressen = array("example.com, example.info");
$email  = 'xxxx@example.com';

$user = strstr($email, '@', false);
$user = str_replace('@', "", $user);

echo $user;

if (!in_array($user, $erlaubteMailAdressen)) {
	echo "Endung nicht gefunden";
}

Es wird immer gesagt "Endung nicht gefunden" Mein example steht doch im array.

  1. Hallo

    
    $erlaubteMailAdressen = array("example.com, example.info");
    $email  = 'xxxx@example.com';
    
    $user = strstr($email, '@', false);
    $user = str_replace('@', "", $user);
    
    echo $user;
    
    if (!in_array($user, $erlaubteMailAdressen)) {
    	echo "Endung nicht gefunden";
    }
    

    Es wird immer gesagt "Endung nicht gefunden" Mein example steht doch im array.

    Betriebsblind? Im Array steht das Element example.com, example.info, mehr nicht.

    Tschö, Auge

    --
    Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
    Hohle Köpfe von Terry Pratchett
    1. Betriebsblind? Im Array steht das Element example.com, example.info, mehr nicht.

      Das gleiche steht doch auch in $user, also vergleiche ich beide miteinander?

      1. Hallo

        Betriebsblind? Im Array steht das Element example.com, example.info, mehr nicht.

        Das gleiche steht doch auch in $user, also vergleiche ich beide miteinander?

        Nein, dort steht nur „example.com“ oder „example.info“ aber nicht „example.com, example.info“. Wird's nun klarer?

        Tschö, Auge

        --
        Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
        Hohle Köpfe von Terry Pratchett
        1. Jetzt habe ich es verstanden, danke!

          $erlaubteMailAdressen	= array('example.com', 'example.info');
          $email  				= 'xxxx@example.com';
          
          $user = strstr($email, '@', false);
          $user = str_replace('@', "", $user);
          
          if (!in_array($user, $erlaubteMailAdressen)) {
          	echo "Endung nicht gefunden";
          }
          

          Das wird dann umständlich, denn die Werte für erlaubteMailAdressen wollte ich aus einer Datenbank auslesen. Füllen kann dieses über ein Textfeld. Das heißt beim Eintragen muss ich genau auf die Schreibweiße achten.

          1. Hallo,

            Das heißt beim Eintragen muss ich genau auf die Schreibweiße achten.

            Wobei eigentlich die Farbe des Eintrags nicht so die Rolle spielen sollte…

            Gruß
            Kalk

            1. Ich schreibe gerne auf weiß!

  2. Tach!

    was mache ich hier falsch?

    Du verwendest anscheinend nach wie vor keine Debugging-Methoden, um zu überprüfen, was in deinen Variablen steht.

    if (!in_array($user, $erlaubteMailAdressen)) {
    	echo "Endung nicht gefunden";
    }
    

    Es wird immer gesagt "Endung nicht gefunden" Mein example steht doch im array.

    Dann prüfe, ob es wirklich so ist.

    <pre>
    <?php
    var_dump($user);
    var_dump($erlaubteMailAdressen);
    

    Vielleicht fällt dir ja was an $erlaubteMailAdressen auf ...

    dedlfix.

    1. Hallo,

      als Ausgabe erhalte ich dieses

      string(11) "example.com"
      array(1) {
        [0]=>
        string(25) "example.com, example.info"
      }
      

      Und mit

      !in_array($user, $erlaubteMailAdressen)
      

      frage ich doch, ist $user in $erlaubteMailAdressen und dieses ist ja der Fall?

      1. Hallo Bernd,

        !

        Bis demnächst
        Matthias

        --
        Pantoffeltierchen haben keine Hobbys.
        ¯\_(ツ)_/¯
      2. Tach!

        als Ausgabe erhalte ich dieses

        string(11) "example.com"
        array(1) {
          [0]=>
          string(25) "example.com, example.info"
        }
        

        Und mit

        !in_array($user, $erlaubteMailAdressen)
        

        frage ich doch, ist $user in $erlaubteMailAdressen und dieses ist ja der Fall?

        Du fragst, ob der Wert in $user ein Element in $erlaubteMailAdressen ist. Ist es aber nicht. Da steht nur ein Element drin und das hat einen anderen Wert.

        dedlfix.

        1. Ok, ich habe es jetzt hinbekommen

          $erlaubteEndungen	= 'example.com, example.info';
          
          $erlaubteEndungen = explode(',', $erlaubteEndungen);
          $erlaubteEndungen = array_map('trim', $erlaubteEndungen);
          
          $email = 'xxxx@example.com';
          
          $user = strstr($email, '@', false);
          $user = str_replace('@', "", $user);
          
          if (!in_array($user, $erlaubteEndungen)) {
          	echo "Endung nicht gefunden";
          }