PHP和HTML<一个href>留下额外的空间?



我有以下PHP代码

$links = fopen("./links/links.txt", "r");
if ($links) {
    while (($line = fgets($links)) !== false) {
        $linkData = explode(" ", $line);
        /// The line below is the problematic one
        echo "<a href='".$linkData[0]."' class='links-item'>".$linkData[1]."</a><br>";
    }
    fclose($links);
} else {
    die('Error opening file, try refreshing.');
}

你可以看到我已经分开了我遇到问题的行。我有以下文件links.txt

http://example.com Example
http://example2.com Example2

基本上,这会将文本文件中的 URL 添加到锚标记中,并在它旁边添加文本,因为锚点显示文本。它可以工作,但由于某种原因,每个锚标签都以空格结尾,最后一个除外。有人知道为什么会这样以及我该如何解决它吗?

fgets()返回的字符串包括分隔行的换行符。这将在$linkData[1]末尾,所以你正在写

<a href='http://example.com' class='links-item'>Example
</a><br>

到输出。

您可以改用fgetcsv() ,指定空格作为字段分隔符。这将为您分解行并自动忽略换行符。

while (($linkData = fgetcsv($links, 0, " ")) !== false) {
    echo "<a href='".$linkData[0]."' class='links-item'>".$linkData[1]."</a><br>";
}

fgets()将换行符和单词字符捕获到字符串中。使用修剪功能删除不需要的空格:

echo "<a href='".trim($linkData[0])."' class='links-item'>".trim($linkData[1])."</a><br>";

或者,如@Barmar所述,您可以使用fgetcsv函数

使用

var_dump($linkData);

看看 fgets() 返回什么。也许有意想不到的角色。

考虑使用更高级的文件格式,例如,您可以使用 csv 格式并使用 http://php.net/manual/en/function.fgetcsv.php 从文件中检索结果。

最新更新