Christoph: Wo liegt in diesem PHP Script der Fehler?

Hi,

habe folgenden Script und dort funzt der Link nicht, dass er im selben Frame geöffnet wird!

<?php
$tf = fopen ('../daten/home.txt', 'r');
$titel = fgets ($tf,70);
$text = fgets ($tf,350);
$link = fgets ($tf,80);
$target = fgets ($tf,15);
$linkt = fgets ($tf,30);
fclose ($tf);
echo ("$titel</b><br><br>$text");
?>
<?php echo ("<a href="$link" target="_$target"><b>>> <u>$linkt</u></b></a>");
?>

hier die home.txt:
SWR3 Dance Night in Walldürn
Am 30. April...bla....bla....bla<br><br>Wir verlosen dafür
../community/gewinnspiel.php
self
Gewinnspiel

danke.

  1. Ich glaube der Unterstrich(_) vor dem $target muss weg!
    Probiere das mal aus!

    Marco

    1. Nö dass is es leider nicht!

      1. So wirds angezeigt!
        warum der das in die nächsten Zeilen setzt ist mir auch ein Rätsel!

        <p style="text-align:right; margin-left:20; margin-right:20">
        <a href="../community/gewinnspiel.php
        " target="_self
        "><b>>> <u>Gewinnspiel</u></b></a></p>

        1. Hallo Christoph,

          warum der das in die nächsten Zeilen setzt ist mir auch ein Rätsel!

          fgets liest auch immer noch das Neue-Zeile-Zeichen mit ein. Daher musst Du dieses Zeichen aus der Zeichenkette entfernen:

          if ($str{strlen($str)-1} == "\n") {
            $str = substr ($str, 0, strlen ($str) - 1);
          }

          (für alle Zeichenketten, die betroffen sind)

          Viele Grüße,
          Christian

          --
          Ich bin ein Bandbreitenverschwender. Meine Signatur tut mir leid. Ehrlich!
          1. Hallo Christian,

            if ($str{strlen($str)-1} == "\n") {

            es muss doch nicht immer nur "\n" sein, oder?

            $str = substr ($str, 0, strlen ($str) - 1);

            warum nicht einfach trim() (oder rtrim())?

            Grüße aus Nürnberg
            Tobias

            [1] http://www.php.net/trim

            --
            Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
            1. Hallo Tobias,

              if ($str{strlen($str)-1} == "\n") {
              es muss doch nicht immer nur "\n" sein, oder?

              Ups. Hast recht:

              if (($str{strlen($str)-1} == "\012" && $str{strlen($str)-2} != "\015") || $str{strlen($str)-1} == "\015") {
               $str = substr ($str, 0, strlen ($str) - 1);
              } else if ($str{strlen($str)-2} == "\015" && $str{strlen($str)-1} != "\012") {
               $str = substr ($str, 0, strlen ($str) - 2);
              }

              $str = substr ($str, 0, strlen ($str) - 1);
              warum nicht einfach trim() (oder rtrim())?

              Weil rtrim auch normale Leerzeichen abschneidet.

              Viele Grüße,
              Christian

              --
              Ich bin ein Bandbreitenverschwender. Meine Signatur tut mir leid. Ehrlich!
              1. Hallo Christian,

                warum nicht einfach trim() (oder rtrim())?
                Weil rtrim auch normale Leerzeichen abschneidet.

                wo liegt da das Problem? Es ist doch egal, ob am Stringende Leerzeichen sind, oder nicht (in [pref:t=44234&m=241158] sind sowieso keine zu sehen).

                Grüße aus Nürnberg
                Tobias [verwirrt]

                --
                Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
                1. Ist das so viel Aufwand um eine Stelle wegzuschneiden?

                  if ($titel{strlen($titel)-1} == "\n") {
                    $titel = substr ($titel, 0, strlen ($titel) - 1); }

                  mfg chris

  2. Moin!

    habe folgenden Script und dort funzt der Link nicht, dass er im selben Frame geöffnet wird!

    Dann schau nach, welcher HTML-Code generiert wurde, und ob der möglicherweise nicht das tut, was du erwartest. Validieren dieses Codes wäre z.B. eine gute Idee.

    - Sven Rautenberg

    --
    Signatur oder nicht Signatur - das ist hier die Frage!