字符串在 PHP 中无法正确连接

Strings won't concatenate correctly in PHP

提问人:Rocky 提问时间:7/26/2016 最后编辑:chris85Rocky 更新时间:7/26/2016 访问量:1925

问:

我有一个在PHP脚本中运行的循环,它是.inc的一部分.php(它是一个从.txt文件中读取的标头,因此它可以仅从.txt的信息添加到它的导航栏中)。例如,在 .txt 中可以是:

大约

联系

支持

它逐行读取文本文件,并将每一行作为字符串返回,然后在导航栏中作为链接回显。无论出于何种原因,关于和联系人链接没有“.php”扩展名,但支持链接有。无论 .txt 文件中放了什么,它的最后一行总是会获得扩展名,而其他行则不会。我在回声声明中绕了一圈引文,但无济于事。关于如何解决这个问题的任何想法?

<?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>";
        }
    }
    ?>
php fopen 字符串串联 feof

评论

0赞 Nathan Robb 7/26/2016
你能告诉我们这个文件是什么样子的吗?

答:

2赞 aynber 7/26/2016 #1

您的链接结构不正确。您需要在 href 周围加上引号。你不需要从回声中出来连接。

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

您可以在变量名称周围使用大括号,以确保它不会与任何其他单词混合:{}

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

评论

1赞 Niet the Dark Absol 7/26/2016
从技术上讲,属性值周围的引号是可选的,前提是它们所包含的符号受到限制。
0赞 aynber 7/26/2016
嗯,有意思。我想这在我的脑海中根深蒂固。这在我看来是不对的,使用它们可能是更好的做法。
1赞 Niet the Dark Absol 7/26/2016
哦,当然。不可否认。但这并不能解决问题,因为 将是 ,这无疑会导致 404 :)hrefcontact%0D%0A.php
3赞 Niet the Dark Absol 7/26/2016 #2

呈现的 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>';

(“支持”没有这个问题,因为它是文件中的最后一行,因此在它的末尾没有换行符)