【问题标题】:issue with a php tag systemphp标签系统的问题
【发布时间】:2011-03-16 03:00:46
【问题描述】:

我正在尝试建立一个标记系统,但是我在这里遇到了一些困难,如果有人可以帮助我,我将非常感激,无论如何我只是想查询数据库中被卡在一行中的标记在表的数据库中,每个标签都用逗号分隔,我正在尝试获取每个标签并从每个标签中创建一个链接。

一旦我查询数据库,输出基本上如下所示:

tag1, tag2, tag3, tag4, tag5, tag6

我希望能够将它们分开。

【问题讨论】:

  • 等等,这些标签在一个单元格中而不是一整行...除非您让它们打印,否则这些逗号如何打印?
  • 我猜你不是在寻找一种对字符串进行标记的方法:$tags = explode ( "," , "tag1, tag2, tag3, tag4, tag5, tag6"); 也许你应该清楚:[1] 信息以什么格式包含在 db 中? [2] 你要什么格式,什么变量
  • 啊抱歉,是的,它的存储方式与数据库中的完全一样,它是名为“tags”的行。
  • 所以在我完成查询后,所有内容都存储在变量 $tags 中,所以我应该 $tags = explode("," , $tags);然后我可以像 $tags[1]、$tags[2] 等循环调用每一个,等等,?我正在研究内爆,但我知道那是不对的。

标签: php mysql tags tagging


【解决方案1】:

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

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

其他一些选项可能是:

  • preg_replace_callback()
  • explode()(正如其他用户所说)

【讨论】:

  • 谢谢,这非常有用,在您看来效率更高,使字符串内爆,并使用循环或您呈现的方式?看起来您列出的代码较少
  • 这取决于你想要做什么。对程序员来说,内爆字符串是最容易理解的,如果没有太多标签,它就不会占用大量资源......但是,正则表达式可能(不确定)更节省资源,但我假设它是.
  • 谢谢你,我唯一不确定我是否理解你提供的代码是“$1”我假设$1 你用来表示一个标签或标签一号,实际的链接只是一个散列,其中打印了变量内容,斜杠是转义字符。我明白了吗?
  • 好吧,代码就像一个魅力,但唯一的问题是,如果标签中有数字,则该数字不是链接的一部分。有点奇怪,但我想它正在寻找从 a 到 z 列出的单词,我可以在其中添加数字吗?
【解决方案2】:

这是实现标记系统的一种非常好的方式。

http://www.phpro.org/tutorials/Tagging-With-PHP-And-MySQL.html

其他方式是使用explode()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2021-08-15
    • 2010-12-31
    • 2011-04-26
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多