首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP标签系统

PHP标签系统
EN

Stack Overflow用户
提问于 2014-02-20 13:28:43
回答 3查看 637关注 0票数 0

我有这样的剧本:

代码语言:javascript
复制
<?php

    $string = "@Erol Simsir @Hakan Simsir";
    $output = preg_replace("/@([^\s]+)/", "<a href=\"?tag=$1\">$1</a>", $string);
    echo $output;

?>

此脚本检测前面有“@”符号的所有单词,并将它们转换为链接/标记。然而,我不想要一个标签系统,而是一个标签系统,就像在推特上一样,在那里你可以做'@ JohnDoe‘,用户JohnDoe将是推特的用户。

因此,我需要的是将所有的标记存储在一个数组中的字符串中,然后将它们用于SQL查询。

我怎样才能做到这一点?

更新

我现在有个代码:

代码语言:javascript
复制
$string  = $_POST["tags"];
$output = preg_replace("/@([^\s]+)/", "<a href=\"?tag=$1\">$1</a>", $string);
$finalOutput = explode(" ", $string);
$count = count($finalOutput);
$i = 0;
while($i < $count) {
echo $finalOutput[$i];
$i = $i + 1;
}

问题是,输出中的标签看起来是这样的:@john @sandra等。我如何删除输出中的@符号?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-20 13:42:19

代码语言:javascript
复制
$array = explode(' ', $string);

尝试使用以下代码:)

代码语言:javascript
复制
$count = count($array);
$tag_array = array();
$j=0;
for($i=0;$i<$count;$i++)
{
  if(substr($array[$i],0,1)==='@')
  {
    $tag= ltrim ($array[$i],'@');
    $tag_array[$j] = $tag;
    $j++;
  } 
}

print_r($tag_array);

如果您需要进一步的帮助,请告诉我:)

票数 1
EN

Stack Overflow用户

发布于 2014-02-20 13:48:01

最简单的方法是使用

代码语言:javascript
复制
$string = "@Erol Simsir @Hakan Simsir";
preg_match_all("/@(\w+)/", $string, $output);
print_r($output[0]);
票数 1
EN

Stack Overflow用户

发布于 2014-02-20 14:00:48

我看到这个剧本出了点问题:

代码语言:javascript
复制
$string  = $_POST["tags"];
$output = preg_replace("/#([^\s]+)/", "<a href=\"?tag=$1\">$1</a>", $string);
$finalOutput = explode(" ", $output);
$count = count($finalOutput);
$i = 0;
while($i < $count) {
    echo $finalOutput[$i] . "<br />";
    $i = $i + 1;
}

它也爆炸了所有没有“符号”的单词。当我在表单中插入'JohnDoe‘时,它也接受这一点,但是它应该只接受带有@符号的文本。因此,当我在脚本中插入'JohnDoe‘时,它应该验证并说明这不是一个有效的标记。只有当输入像“约翰”、“史蒂夫”之类的时候,它才会起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21909267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档