LSpreee: Abfrage: Variable enthält Text -> ja /nein

wie lautet die kürzeste Kontrollstruktur zur Abfrage, ob eine Variable Text enthält.

if ($textvar)
ist das gültig? Funktionieren tuts. Auch wenn $texvar kein Boolean ist. Kann ich diesen Code guten Gewissens verwenden?

Oder was mit isset(); ?

Vielen Dank

  1. Hi,

    wie lautet die kürzeste Kontrollstruktur zur Abfrage, ob eine Variable Text enthält.

    if ($textvar)
    ist das gültig? Funktionieren tuts.

    Nur, wenn die Variable existiert - sonst gibt es, bei sinnvoll eingestelltem error_reporting, eine Notice.

    Auch wenn $texvar kein Boolean ist.

    PHP konvertiert automatisch zwischen Typen, ja.

    Kann ich diesen Code guten Gewissens verwenden?

    Kommt drauf an. Soll bspw. eine Variable mit dem Textinhalt "0" auch als false gelten ...?

    Oder was mit isset(); ?

    Oder was mit empty ... was das alles als wahr und was als falsch wertet, kannst du im Handbuch nachlesen.
    Und bezüglich der automatischen Typ-Konvertierung und zu welchen Ergebnissen sie bei welchen Inhalten führt, ebenfalls.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Hi,

      if ($textvar)
      ist das gültig? Funktionieren tuts.

      auch mit

      $textvar = "0";
      oder
      $textvar = "false";
      oder
      $textvar = "";

      vor der Abfrage?

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. Hi!

        if ($textvar)
        ist das gültig? Funktionieren tuts.

        auch mit
        $textvar = "0";
        $textvar = "false";
        $textvar = "";
        vor der Abfrage?

        Siehe dazu PHP type comparison tables. Das beginnt mit einer Tabelle, die einige Funktionsergebnisse und auch den impliziten Typecast nach boolean auflistet.

        Lo!

      2. Vielen Dank euch zwei.

        Ich verwende es jetzt. Ich verwende es in einer eigenen Funktion, mit den folgenden ersten zwei Zeilen:

        function echoTab($data,$class="",$style=""){  
          
          if ($class) $class = "class='$class'";  
        .  
        .  
        .  
        
        

        Daher ist mir die Geschichte mit der "0" egal. Ich rufe Die Funktion nur selbst auf!

        Danke.

        1. Liebe(r) LSpreee,

          function echoTab($data,$class="",$style=""){

          if ($class) $class = "class='$class'";
          .
          .
          .

            
          besser so:  
            
          ~~~php
          function echoTab($data,$class="",$style=""){  
              if (!emtpy($class)) {  
                  $class = sprintf(' class="%s"', $class);  
              }  
            
              if (!emtpy($style)) {  
                  $style = sprintf(' style="%s"', $style);  
              }  
              ...  
          }
          

          Liebe Grüße,

          Felix Riesterer.

          --
          ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
          1. Arrrgh, blödes copy&paste!

            es muss natürlich "empty" heißen...

            [...] if (!empty($class))[...]

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
          2. Hi!

            besser so:
                    $class = sprintf(' class="%s"', $class);

            Noch besser:

            $class = sprintf(' class="%s"', htmlspecialchars($class));

            Analog beim style-Attribut.
            Auch wenn er die Funktion derzeit nur selbst zu verwenden gedenkt, sollte er sich nicht unnötig XSS-Lücken einbauen.

            Lo!