Denise: Kommentare werden seltsam geparst

Hi,
eine Frage die ich schon lange mit mir herum schleppe,
aber doch immer vergesse zu fragen.

Mir fällt immer mal wieder auf, dass der PHP Parser
ein Script abbricht weil innerhalb eines Kommentares
"php tags" sind. Das ist so bei "//" auch bei "#", aber
seltsamerweise nicht bei "/* */". Woran liegt das?

Also :

// wenn ich diesen Kommentar schreibe <?php ?> gibts Fehler.

so <?php auch

/* so <?php ?> aber nicht */

Nicht das dieses ein grosses Problem wäre, aber immer wenn das
passiert, ärgere ich mich aufs Neue und frage mich warum das so ist.

vg.
Denise

    1. Hallo Rob,
      danke für die Links.

      Aber das dieses so ist, ist mir schon klar,
      die Frage ist eher "Warum" wird das so gemacht.

      Welchen Sinn hat es, dass ein Kommentar überhaupt
      überprüft wird. Kostet doch nur, wenngleich auch unmerklich,
      Performance. Also warum werden einzeilige Kommentare nicht
      genauso ignoriert vom Parser wie mehrzeilige.

      Gibt es ein logisches Beispiel warum das sinnvoll ist?

      Gruss
      Denise

  1. Was mir mal aufgefallen ist, ist dass eine RegEx kein ?> enthalten darf.

    Also preg_replace('/<(test)?>/','test',$test) verursacht bei mir einen fehler. Wogegen preg_replace('/<((test)?)>/','test',$test) funktioniert.

    1. Hi!

      Was mir mal aufgefallen ist, ist dass eine RegEx kein ?> enthalten darf.

      Beide Zeichen haben ja auch eine besondere Bedeutung und müssen deshalb in deinem RegEx maskiert werden, wenn du nach ihnen als Zeichen suchen willst.

      Also preg_replace('/<(test)?>/','test',$test) verursacht bei mir einen fehler. Wogegen preg_replace('/<((test)?)>/','test',$test) funktioniert.

      Und was genau hat diese Frage jetzt mit den PHP-Kommentaren zu tun..?

      Schöner Gruß,
      rob

      1. Nichts, war nur eine kleine Ergänzug.

  2. Ich nehme an, dass das daher kommt, dass // bzw. # nur für eine Zeile gelten und in PHP eine Zeile nicht nur mit einem Umbruch beendet ist, sondern auch mit ?>.