我在MySQL数据库中有;
分隔的标记,它们都在一个字段中。
所以每当我尝试加载该字段时。数据将显示如下:
tag1 ; tag2 ; tag3
我想要做的是为每个标签添加网址。基本上我想这样显示:
<a href="http://example.com/tag1">tag1</a>
<a href="http://example.com/tag2">tag2</a>
<a href="http://example.com/tag3">tag3</a>
我正在考虑使用str_replace
将;
替换为</a>
,但我该如何处理每个标记的开头!
是否有比str_replace
更好的代码?
答案 0 :(得分:8)
你可以在;
和explode上通过生成的数组“作弊”而只是loop。
这是几乎从不正确的做法!您应该始终努力normalize您的数据库(如果您不这样做,您应该知道为什么您选择不这样做)。因为它目前是你的表甚至没有遵守第一个普通形式,它表明你应该在每个领域只有原子数据。这是一个坏主意的原因是因为您将很难查询表(例如,获取具有特定标记的所有行)。
要做的是为标签创建一个单独的表格,其中包含两个字段:postid
(来自您已有的表格)和tag
。然后使用JOIN
操作将它们连接在一起。
答案 1 :(得分:4)
$tags = "tag1 ; tag2 ; tag3";
$t = explode(";",$tags);
$string = '';
foreach($t as $value) {
$value = trim($value);
$string .= "<a href='http://example.com/$value'>$value</a>";
}
答案 2 :(得分:1)
$string = "tag1 ; tag2 ; tag3";
$tags = explode(" ; ", $string);
foreach ($tags as $tag) {
echo '<a href="http://example.com/'. $tag .'">' . $tag .'</a>';
}