我正在数据库中以逗号分隔的列表中存储标签列表。
此数据的一个示例是:
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 . '%"
这似乎只有在我单击第二个、第三个、第四个等链接时才有效,而不是第一个链接。
我假设它与逗号或空格有关。
无需在命令和空间上爆炸。仅在逗号上爆炸,稍后修剪空格。
试试这个:
$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>
第一个标签"平面设计"有一个空格,在网址中是不安全的。将其删除,更换或使用urlencode()
:
$Tags = explode(', ', $value['Tags']);
foreach($Tags as $key => $value) {
echo '<a href="' . BASE_URL . 'news/tag/' . urlencode($value) . '">' . $value . '</a>';
}