У меня есть цикл, работающий в скрипте PHP, который является частью .inc.php (это заголовок, который читает из файла .txt, так что он может добавить к своей панели навигации информацию только из .txt). Например, в .txt может быть:
около
контакт
служба поддержки
Он читает текстовый файл построчно и возвращает каждую строку в виде строки, которая затем отображается в виде ссылки на панели навигации. По любой причине ссылки about и contact не имеют расширения «.php», но ссылка поддержки имеет. Неважно, что помещено в файл .txt, последняя строка всегда получит расширение, а остальные нет. Я жонглировал цитатами в выражении echo, но безрезультатно. Любые идеи относительно того, как я могу это исправить?
<?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>";
}
}
?>
Ваш визуализированный HTML выглядит так:
<li><a class=button href=contact
.php>Contact
</a></li>
Вы понимаете, почему это может быть проблемой?
Во-первых, добавьте кавычки вокруг ваших атрибутов. Во-вторых, trim
твоя строка
$pagename = trim(fgets($newFile));
$pagenamecap = ucfirst($pagename);
echo '<li><a class="button" href="'.$pagename.'.php">'.$pagenamecap.'</a></li>';
(«Поддержка» не имела этой проблемы, потому что это была последняя строка в файле, и, следовательно, не было новой строки в конце)
Ваша структура ссылок неверна. Вам нужны цитаты вокруг HREF. Вам не нужно выходить из эха, чтобы объединить.
echo "<li><a class=button href='$pagename.php'>$pagenamecap </a></li>";
Вы можете использовать брекеты {}
вокруг имен переменных, чтобы убедиться, что они не перепутаны ни с одним другим словом:
echo "<li><a class=button href='{$pagename}.php'>{$pagenamecap} </a></li>";