2011-03-16 57 views
0

我想建立一个标记系统,但我在这里有一个小diffuculty,如果有人可以帮助我会非常感激,无论如何,我只是试图查询数据库的标记在表格的数据库中插入一行,每个标签都用逗号分隔,以及我试图将每个标签取出并创建每个标签的链接。问题与PHP标记系统

一旦我查询数据库输出基本上看起来如下:

tag1, tag2, tag3, tag4, tag5, tag6 

,我希望能够将它们分开。

+0

等待,所以这些标签是在一个小区不是一整排...除非您打印它们,否则这些逗号如何打印? – 2011-03-16 03:02:53

+2

我想你不是在寻找一种方法来标记字符串: '$ tags = explode(“,”,“tag1,tag2,tag3,tag4,tag5,tag6”);'也许你应该清楚:[ 1]信息包含在db中的格式是什么? [2]你想要什么格式,以及在什么样的变量 – 2011-03-16 03:06:03

+0

啊对不起,是的,它的存储方式与数据库中的完全相同,它的名字为“tags”。 – mcbeav 2011-03-16 03:12:29

回答

2

如果你已经从数据库中逗号分隔值,您可以使用正则表达式打印出来的标签:

echo preg_replace("/([a-z]+)/", "<a href=\"#$1\">$1</a>", $str); 它只是通过搜索az单词并将它们转换为链接。

其他一些选项可以是:

  • preg_replace_callback()
  • 爆炸()(与其他网友说)
+0

谢谢你,这是非常有用的,你认为哪种方法更有效率,内化字符串,并使用循环或你提供的方式?看起来你已经列出的代码更少 – mcbeav 2011-03-16 03:18:46

+1

这取决于你想要做什么。 Imploding一个字符串是程序员最容易理解的,如果没有太多标签,它不是非常耗费资源......然而,正则表达式可能(不确定)更节约资源,但我假设它是。 – 2011-03-16 03:23:14

+0

谢谢你,我唯一不能确定的是你在代码中的理解是“$1”我假设你用1美元代表一个标签或第一个标签,而实际的链接只是一个散列变量内容打印在里面,而斜杠是转义字符。我是否理解这一点? – mcbeav 2011-03-16 03:25:29