使用PHP从数据库获取html链接

时间:2018-09-23 13:24:50

标签: php html sql

我有一个数据库表,其中包含以下行:“ id”,“ link”和“ name” 链接为:

<a href=\"https://www.sample.com/file1.php\">[1-200]< /a> <a href=\"https://www.sample.com/file2.php\">[201-224]< /a>

和名称:

  

item1

我有以下PHP代码从数据库中获取信息并将其返回给访问者。我的问题是file2.php的链接不仅被用作[201-224]的超级链接,而且该超链接也应用于其余页面内容。我该如何预防?并预先感谢。

echo "</br> ".$name=  $row['name'];
        echo "</br> ".$Torrentlink= preg_replace('/\\\\/', '',$row['Torrentlink']);

        echo "</br> ";
        echo "</br> ";echo "</br> ";
        echo "the rest of my text goes here ";

3 个答案:

答案 0 :(得分:1)

这是处理此类数据的一种糟糕方法。如果您知道它们都是链接,那么您应该只存储链接和名称(当然,id和其他元数据可能会有用)。您当前的状况会给您后面的工作人员带来太多错误和维护问题。如果您不想为每个链接创建记录,请考虑将它们存储为JSON或其他格式。

示例:(将JSON作为VARCHAR存储在数据库中

<?php

//Populate variable from DB
//$TorrentLinks = $row{'Torrentlink'};
$TorrentLinks = '[
     {"url":"https://www.sample.com/file1.php","text":"[1-200]"},
     {"url":"https://www.sample.com/file2.php","text":"[201-224]"}
]';

//Convert to array
$jsonLinks = json_decode($TorrentLinks,true);

//Iterate and print links
foreach ($jsonLinks as $key => $value) {
    echo "<a href=\"{$value["url"]}\">{$value["text"]}</a><br />";
}

结果:

<a href="https://www.sample.com/file1.php">[1-200]</a>
<a href="https://www.sample.com/file2.php">[201-224]</a>

根据捕获数据的方式,还可以使用htmlspecialchars()之类的东西来阻止特殊字符的执行。

答案 1 :(得分:0)

我认为您的preg_replace('/\\\\/', '',$row['Torrentlink']);

有问题

/\\\\/查找带有双反斜杠\\的文本。看来您的意图是仅查找单个反斜杠以在链接中消除它们。

所以尝试用

替换它

preg_replace('/\\/', '',$row['Torrentlink']);

例如https://regexr.com/是检查正则表达式的好地方。

答案 2 :(得分:0)

错误只是输入的html文本。

问题是该行中的“ ”:

<a href=\"https://www.sample.com/file1.php\">[1-200]< /a> <a href=\"https://www.sample.com/file2.php\">[201-224]< /a>

反斜杠前有一个空格。