从php数组元素创建超链接


creating hyperlinks from php array elements

我有一个标签系统:(注意:$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数组元素将标签链接到类别页面的方法。在这个页面上,我想调用"hashtaged"这个词,并使用mysql查询来获取带有hashtag的帖子。然而,当我调用$arr[$i]进行响应时,我会得到一个错误:

未定义的偏移量:在我调用此数组元素的行上为1转换为另一个变量。

有什么方法可以让我以更好、更有效的方式完成这项任务吗?

好的,所以使用一些regex和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>.

点击此处查看操作