我有这样的剧本:
<?php
$string = "@Erol Simsir @Hakan Simsir";
$output = preg_replace("/@([^\s]+)/", "<a href=\"?tag=$1\">$1</a>", $string);
echo $output;
?>此脚本检测前面有“@”符号的所有单词,并将它们转换为链接/标记。然而,我不想要一个标签系统,而是一个标签系统,就像在推特上一样,在那里你可以做'@ JohnDoe‘,用户JohnDoe将是推特的用户。
因此,我需要的是将所有的标记存储在一个数组中的字符串中,然后将它们用于SQL查询。
我怎样才能做到这一点?
更新
我现在有个代码:
$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等。我如何删除输出中的@符号?
发布于 2014-02-20 13:42:19
$array = explode(' ', $string);尝试使用以下代码:)
$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);如果您需要进一步的帮助,请告诉我:)
发布于 2014-02-20 13:48:01
最简单的方法是使用全:
$string = "@Erol Simsir @Hakan Simsir";
preg_match_all("/@(\w+)/", $string, $output);
print_r($output[0]);发布于 2014-02-20 14:00:48
我看到这个剧本出了点问题:
$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‘时,它应该验证并说明这不是一个有效的标记。只有当输入像“约翰”、“史蒂夫”之类的时候,它才会起作用。
https://stackoverflow.com/questions/21909267
复制相似问题