【问题标题】:php link from csv bug (href value might be too long?)来自 csv 错误的 php 链接(href 值可能太长?)
【发布时间】:2013-05-17 20:31:48
【问题描述】:

我不是 php 专家...如果我忽略了某些东西,请原谅我...

我有一个包含两列的 csv 文件,如下所示:

 john, VSgv4lEpuGS0vHIKapJZV7o...
 jane, yHKy6NW6YJZzloFhLDQUJIN...

第一个带有简单的名称,第二个带有 1000+ 个字符的字符串。我试图将这些内容回显到一个页面中,在该页面中,简单名称成为一个超链接,其中长字符串作为其源。我有以下内容:

    <?php

            if (($list = fopen("list.csv", "r")) !== FALSE) {  
                while (($data = fgetcsv($list, 1000, ",")) !== FALSE) {
                    echo "<div><a href='localhost:8888/folder/".$data[1]."'>" . $data[0] . "</a></div>"; 
                }
                fclose($list);
            }

    ?>

相反,名称显示为链接,但 href 包含除长字符串的最后 30 多个字符之外的所有内容。最奇怪的是,剩下的 30 多个字符显示在该 div 下方......在它自己的内部(即模仿我为链接名称设置的结构)

...任何想法为什么会发生这种情况&&如何解决它???? ...我很困惑。

【问题讨论】:

  • 您还应该反转 ' 和 " 以管理正确的 HTML 代码:echo '';

标签: php url csv encode


【解决方案1】:

我的第一个猜测是在你很长的字符串中你有一个''字符会破坏html。您可以尝试将 $data[1] 包装在转义这些字符的函数 htmlspecialchars() 中..

文档:
http://php.net/manual/en/function.htmlspecialchars.php

示例:

echo "<div><a href='localhost:8888/folder/".htmlspecialchars( $data[1] )."'>" . htmlspecialchars( $data[0] ) . "</a></div>"; 

【讨论】:

  • 这也是我的猜测,当您将数据从其他地方粘贴到页面时,您应该真的,真的使用htmlspecialchars 或类似的东西。不这样做是网站被黑客入侵的方式。 en.wikipedia.org/wiki/Cross-site_scripting
【解决方案2】:

这里的行:

while (($data = fgetcsv($list, 1000, ",")) !== FALSE) {

从文件中读取一千个字符。然后处理它。如果一个字段超过该长度,它将处理它可以处理的内容,然后在 while 循环的下一次迭代中继续处理该字段的其余部分。

您最好使用 fgets 将所有内容读入变量并进行处理;或者可能只是将数量增加到 1000 以上作为短期修复。

【讨论】:

  • 来自 PHP 手册:length:必须大于 CSV 文件中的最长行(以字符为单位)(允许尾随行尾字符)。 . 尝试 10000 之类的,或设法分析您的文件
  • 啊,太好了!我应该看看手册...出于某种原因,我没有意识到这是一个字符限制>> html正在正确呈现,但由于某种原因,当我单击它时只是链接到一个空白页面...我可以复制链接地址,它工作正常......但是当我点击链接时它不会打开......奇怪......
【解决方案3】:

Citing the documentation关于fgetcsv()的第二个参数(length):

必须大于 CSV 文件中的最长行(以字符为单位)(允许尾随行尾字符)。

所以看看你最长的线有多长,并相应地调整参数。如果仅第二个条目就超过一千个字符,则参数必须更大。

【讨论】:

    猜你喜欢
    • 2022-06-29
    • 1970-01-01
    • 2015-07-24
    • 2021-06-30
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多