2016-07-25 25 views
0

Ich habe eine Schleife in einem PHP-Skript, das Teil einer .inc.php ist (es ist eine Kopfzeile, die aus einer TXT-Datei liest, so dass es nur Informationen aus seiner Navbar hinzufügen kann aus der .txt). Zum Beispiel könnte in der .txt sein:Strings werden nicht korrekt in PHP verkettet

über

Kontakt

Unterstützung

Es liest die Textdatei in einer Zeile für Zeile und gibt jede Zeile als einen Zeichenfolge, die dann als Link in der Navigationsleiste ausgegeben wird. Aus welchem ​​Grund auch immer, die Über-und Kontakt-Links haben nicht die ".php" Erweiterung, aber der Support-Link tut. Egal, was in die .txt-Datei geschrieben wird, die letzte Zeile erhält immer die Erweiterung, während die anderen nicht. Ich habe innerhalb der Echo-Anweisung mit Zitaten herumgeblättert, aber ohne Erfolg. Irgendwelche Ideen, wie ich das beheben kann?

<?php 

    if (file_exists("pagespage.txt")) { 

     $newFile = fopen('pagespage.txt', 'r'); 

     while (! feof($newFile)) { 
      $pagename = fgets($newFile); 
      $pagenamecap = ucwords($pagename); 
      echo "<li><a class=button href=" . "$pagename.php>" . $pagenamecap . "</a></li>"; 
     } 
    } 
    ?> 
+0

Können Sie uns zeigen, was die Datei sieht aus wie? –

Antwort

3

Ihre gerenderte HTML sieht wie folgt aus:

<li><a class=button href=contact 
.php>Contact 
</a></li> 

Können Sie sehen, warum dies ein Problem sein könnte?

Fügen Sie zuerst Anführungszeichen um Ihre Attribute hinzu. Zweitens, trim Ihre Zeichenfolge.

$pagename = trim(fgets($newFile)); 
$pagenamecap = ucfirst($pagename); 
echo '<li><a class="button" href="'.$pagename.'.php">'.$pagenamecap.'</a></li>'; 

(„Support“ hat dieses Problem nicht, weil es die letzte Zeile in der Datei war und daher nicht eine neue Zeile am Ende davon hatte)

2

Ihre Linkstruktur ist nicht korrekt. Sie benötigen Anführungszeichen um den href. Sie müssen nicht aus dem Echo herauskommen, um zu verketten.

echo "<li><a class=button href='$pagename.php'>$pagenamecap </a></li>"; 

Sie können Klammern {} um die Variablennamen verwenden, um sicherzustellen, dass es nicht mit einem anderen Wort gemischt bekommt:

echo "<li><a class=button href='{$pagename}.php'>{$pagenamecap} </a></li>"; 
+1

Quotes sind technisch optional um Attributwerte, vorausgesetzt sie sind in den darin enthaltenen Symbolen eingeschränkt. –

+0

Hmm. Interessant. Ich denke, es ist so tief in meinem Kopf verankert. Es sieht für mich nicht richtig aus, und es ist wahrscheinlich besser, sie zu benutzen. – aynber

+1

Oh, absolut. Ich leugne das nicht. Aber das wird das Problem nicht beheben, da 'href'' contact% 0D% 0A.php' ist, was zweifellos zu einem 404 führen wird :) –