I have a loop running in a PHP script that's part of a .inc.php (it's a header that reads from a .txt file so that it can add to it's navbar from information solely from the .txt). For example, in the .txt could be:
about
contact
support
It reads the text file in a line by line basis and returns each line as a string, which is then echoed out as a link in the navbar. For whatever reason, the about and contact links don't have the ".php" extension, but the support link does. No matter what's put into the .txt file, the last line of it will always get the extension, while the others don't. I've juggled around quotations within the echo statement, but to no avail. Any ideas as to how I can fix this?
<?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>";
}
}
?>
Your rendered HTML looks like this:
<li><a class=button href=contact
.php>Contact
</a></li>
Can you see why this might be a problem?
Firstly, add quotes around your attributes. Second, trim
your string.
$pagename = trim(fgets($newFile));
$pagenamecap = ucfirst($pagename);
echo '<li><a class="button" href="'.$pagename.'.php">'.$pagenamecap.'</a></li>';
("Support" didn't have this problem because it was the last line in the file, and therefore didn't have a newline at the end of it)