Nick: Bei $ im echo gibt es Probleme

Hallo,

folgendes Problem der String:
$Lautsprecher = " & $laenge >= ".$api_lautsprecher->laenge_min;

soll per echo $Lautsprecher; anzeigen:

"& $laenge >= 14" (Ohne Anführungszeigen)

er zeigt an

"& >= 14" (Ohne Anführungszeigen)

Was mache ich falsch muss ich das $laenge escapen?

  1. Hi!

    soll [...] anzeigen:
    "& $laenge >= 14" (Ohne Anführungszeigen)
    er zeigt an
    "& >= 14" (Ohne Anführungszeigen)
    Was mache ich falsch muss ich das $laenge escapen?

    Du beachtest die elementarsten String-Notationsregeln PHPs nicht.

    Lo!

  2. Moin!

    Wenn  Du bei php doppelte Anfuehrungszeichen verwendest interpretiert es Variablen und zeigt deren Werte an. Mit einfachen Anfuehrungszeichen wird das nicht gemacht. Du kannst also einfache Anfuehrungszeichen nehmen oder das $ escapen.

    --
    Vergesst Chuck Norris.
    Sponge Bob kann unter Wasser grillen!
    1. @@Steel:

      nuqneH

      Du kannst also einfache Anfuehrungszeichen nehmen oder das $ escapen.

      solltest aber ersteres tun.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
  3. Moin allerseits,

    Hallo,

    folgendes Problem der String:
    $Lautsprecher = " & $laenge >= ".$api_lautsprecher->laenge_min;

    soll per echo $Lautsprecher; anzeigen:

    "& $laenge >= 14" (Ohne Anführungszeigen)

    er zeigt an

    "& >= 14" (Ohne Anführungszeigen)

    Was mache ich falsch muss ich das $laenge escapen?

    Du musst das $ in Strings mit doppelten Anführungszeichen escapen. Richtig wäre also:

      
    $Lautsprecher = " & \$laenge >= ".$api_lautsprecher->laenge_min;  
    
    

    Andernfalls versucht PHP an der Stelle den Inhalt der Variable $laenge aus zu geben.
    Bei Strings in einfachen Anführungszeichen ist das nicht der Fall.

    Das müsste dir aber mit einem vernünftigen Syntax-Highlighting schon beim Programmieren auffallen.

    Grüße, JN

    --
    ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
    http://www.johny7.de
    1. Hoi!

      Das müsste dir aber mit einem vernünftigen Syntax-Highlighting schon beim Programmieren auffallen.

      Wenn man ein entsprechendes Tool hat/verwenden darf.

      --
      Vergesst Chuck Norris.
      Sponge Bob kann unter Wasser grillen!
    2. @@johny7:

      nuqneH

      Du musst das $ in Strings mit doppelten Anführungszeichen escapen. Richtig wäre also:
      $Lautsprecher = " & \$laenge >= ".$api_lautsprecher->laenge_min;

      Nein, das ist nicht richtig.

      Richtig ist es, den Parser nicht nach Variablen in Strings suchen zu lassen, wenn man dies nicht braucht. Also keine doppelten Anführungszeichen zu verwenden.

      Außerdem muss '&' in HTML escapet werden; bei '>' schadet’s auch nicht. Also entweder
      $Lautsprecher = '[code lang=html] & $laenge >= '.$api_lautsprecher->laenge_min;[/code]

      oder auf die feine Art

      $Lautsprecher = ' & $laenge >= '.$api_lautsprecher->laenge_min;

      und dann aber

      echo htmlspecialchars($Lautsprecher);

      Qapla'

      PS: Warum sollte man „$laenge >= “ ausgeben wollen anstatt „Länge ≥ “?

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
  4. Hallo,

    folgendes Problem der String:
    $Lautsprecher = " & $laenge >= ".$api_lautsprecher->laenge_min;

    soll per echo $Lautsprecher; anzeigen:

    im HTML-Kontext? Dann bitte mit kontextgerechter Behandlung

    echo htmlspecialchars($Lautsprecher);

    Dein Text enhält Zeichen, die

    "& $laenge >= 14" (Ohne Anführungszeigen)

    Möchtest Du den Text $laenge ausgeben oder den Inhalt der Variablen $laenge?
    Ich nehme ersteres an.

    er zeigt an

    "& >= 14" (Ohne Anführungszeigen)

    Was mache ich falsch

    unnötigerweise doppelte Anführungszeichen verwenden statt einfacher.

    muss ich das $laenge escapen?

    Bei Verwendung von doppelten Anführungszeichen, ja.
    Siehe PHP-Handbuch, Strings.

    Freundliche Grüße

    Vinzenz