php - 从 php 数组元素创建超链接

标签 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);

?>

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

我的问题是我使用 php 数组元素将主题标签链接到类别页面的方法。在此页面上,我想调用“hashtagged”一词,并使用 mysql 查询来获取具有主题标签的帖子。但是,当我调用 $arr[$i] 进行回显时,出现错误:

Undefined offset: 1 on the line in which I call this array element into another variable.

有什么方法可以让我更好更有效地完成这个任务吗?

最佳答案

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

关于php - 从 php 数组元素创建超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23111194/

相关文章:

php - 如果在字段中找到指定值,则拒绝 PDO MySQL 语句?

javascript - Ajax ResponseText 对象上的 jQuery 操作

php - Laravel 在通知邮件中添加密件抄送

mysql - 选择一行中的一个

php - 如何记录查询执行时间?

php - 调用未定义的方法 Imagick::getImageCompression()

mysql - 构建复杂的 MySQL 查询

c - AVR gcc,奇怪的数组行为

ios - 根据过滤器数组过滤 UICollectionView

c - 我们不能用指针进行什么操作?