fopen — строки не будут правильно соединяться в переполнении стека

У меня есть цикл, работающий в скрипте 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>";
}
}
?>

0

Решение

Ваш визуализированный 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>';

(«Поддержка» не имела этой проблемы, потому что это была последняя строка в файле, и, следовательно, не было новой строки в конце)

3

Другие решения

Ваша структура ссылок неверна. Вам нужны цитаты вокруг HREF. Вам не нужно выходить из эха, чтобы объединить.

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

Вы можете использовать брекеты {} вокруг имен переменных, чтобы убедиться, что они не перепутаны ни с одним другим словом:

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

По вопросам рекламы [email protected]