用分号分隔标签

时间:2012-08-18 21:08:30

标签: php tags

我在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更好的代码?

3 个答案:

答案 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>';
}