使用逗号分隔列表中的链接创建标记列表

时间:2014-04-02 11:46:11

标签: php

我在我的数据库中以逗号分隔的列表存储标签列表。

此数据的一个示例是:

Graphic Design, Illustration, Animation

我输出逗号分隔列表并使用以下内容创建链接:

$Tags = explode(', ', $value['Tags']);
foreach($Tags as $key => $value) {
    echo '<a href="' . BASE_URL . 'news/tag/' . $value . '">' . $value . '</a>';
}

当您点击链接时,它会使用查询

WHERE Tags LIKE "%' . $tag . '%"

如果我点击第二个,第三个,第四个等链接而不是第一个链接,这似乎只能起作用。

我假设它与逗号或空格有关。

2 个答案:

答案 0 :(得分:0)

无需在命令和空间上爆炸。仅在逗号上爆炸并稍后修剪空间。

试试这个:

$Tags = explode(',', 'Graphic Design, Illustration, Animation');

foreach ($Tags as $tag) {
    $tag = trim($tag);
    echo '<a href="' . BASE_URL . 'news/tag/' . $tag . '">' . $tag . '</a><br>';
}

然后在您的查询中,执行以下操作:

WHERE Tags LIKE "%' . urldecode(trim($tag)) . '%"

输出:

<a href="BASE_URLnews/tag/Graphic Design">Graphic Design</a><br>
<a href="BASE_URLnews/tag/Illustration">Illustration</a><br>
<a href="BASE_URLnews/tag/Animation">Animation</a><br>

答案 1 :(得分:0)

第一个标签“平面设计”有一个在网址中不安全的空间。删除它,替换它或使用urlencode()

$Tags = explode(', ', $value['Tags']);
foreach($Tags as $key => $value) {
    echo '<a href="' . BASE_URL . 'news/tag/' . urlencode($value) . '">' . $value . '</a>';
}