我有一个标签系统:(注意:$ body是一个变量,它是用户提交的帖子。标签在帖子中。)我尝试使用regex进行此操作,但发现此方法同样有效并且容易一些。
<?php
$string = $body;
$htag = "#";
$arr = explode(" ", $string);
$arrc = count($arr);
$i = 0;
while($i < $arrc) {
if(substr($arr[$i], 0, 1) === $htag) {
$arr[$i] = "<a href = 'category.php?#=$arr[$i]'>".$arr[$i]."</a>";
}
$i++;
}
$string = implode(" ", $arr);
?>
然后,在页面后面回显
$string
。我的问题是使用php数组元素将主题标签链接到类别页面的方法。在此页面上,我想称呼带有“标签”的单词,并使用mysql查询来获取具有标签的帖子。但是,当我呼唤
$arr[$i]
时,出现一个错误:未定义的偏移量:在我将此数组元素称为的行上为1
变成另一个变量
有什么方法可以更好,更有效地完成这项任务?
最佳答案
好的,因此可以使用某些正则表达式和PHP的preg_replace函数大大简化此操作。 @Doge在正确的轨道上,但是在我的测试中,\b
并没有给出我认为您想要的结果。
基本上,您可以用几乎所有的东西替换
$newText = preg_replace("/#(\w+)/", "<a href='category.php?tag=$1'>#$1</a>", $text);
如…
$text = "This is a #hashtag within some #awesometext.";
$newText = preg_replace("/#(\w+)/", "<a href='category.php?tag=$1'>#$1</a>", $text);
echo $newText;
结果将是…
This is a <a href='category.php?tag=hashtag'>#hashtag</a> within some <a href='category.php?tag=awesometext'>#awesometext</a>.
See it in action here