从php数组元素创建超链接

时间:2014-04-16 13:40:14

标签: php mysql arrays

我有一个主题标签系统:(注意:$ body是一个变量,是用户提交的帖子。主题标签位于帖子中。)我试图使用正则表达式执行此操作,但发现此方法为同样有效,也更容易理解。

<?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);

&GT;

然后,$string稍后会在页面中回显。

我的问题是我使用php数组元素将hashtag链接到类别页面的方法。在这个页面上,我想打电话给#34; hashtaged&#34;并使用mysql查询来获取具有主题标签的帖子。但是,当我呼叫$arr[$i]时,我会收到错误:

  

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

有什么方法可以更好,更有效地完成这项任务?

1 个答案:

答案 0 :(得分:0)

好的,所以使用一些正则表达式和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