0

我在 MySQL 数据库中有由分隔的标签,;它们都在一个字段中。

所以每当我尝试加载该字段时。数据将显示如下:

tag1 ; tag2 ; tag3

我想要做的是为每个标签添加 url。基本上我想这样显示它:

<a href="http://example.com/tag1">tag1</a> 
<a href="http://example.com/tag2">tag2</a>  
<a href="http://example.com/tag3">tag3</a>

我在想用withstr_replace来代替;</a>但是我该怎么做每个标签的开头!

有没有比这更好的代码str_replace

4

3 回答 3

8

您可能会“作弊”,然后在生成的数组中爆炸;循环。


不过,这几乎从来都不是正确的方法!您应该始终努力规范化您的数据库(如果不这样做,您应该确切地知道为什么选择不这样做)。就目前而言,您的表甚至没有遵守第一个范式,它指出每个字段中应该只有原子数据。这是一个坏主意的原因是因为您将很难查询表(例如获取具有特定标记的所有行)。

应该做的是为标签创建一个单独的表,其中包含两个字段:(postid来自您已有的表)和tag. 然后使用JOIN操作将它们连接在一起。

于 2012-08-18T21:10:50.570 回答
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>";
}
于 2012-08-18T21:13:49.533 回答
1
$string = "tag1 ; tag2 ; tag3";
$tags = explode(" ; ", $string);
foreach ($tags as $tag) {
  echo '<a href="http://example.com/'. $tag .'">' . $tag .'</a>';
}
于 2012-08-18T21:11:10.423 回答