考虑字符串
$tring = "e.g. i want to #sleep."
能够使用
检查哈希标签 echo preg_replace('/(#\w+)/','<a href="tag.php?tag=\1">\1</a>',$tring']);
我想要做的是发送没有前面的哈希值的标记,即<a href="tag.php?tag=sleep">#sleep</a> instead of <a href="tag.php?tag=#sleep">#sleep</a>
答案 0 :(得分:1)
您可以稍微修改正则表达式,以使其正常工作。
echo preg_replace('/(#)(\w+)/i', '<a href="tag.php?tag=\2">\1\2</a>', $tring);
这会创建两个分组,而不是您拥有的分组。 URL链接中仅使用第二个组(单词)。两者都用于显示测试。
这将如何运作的例子
e.g. i want to #sleep. => e.g. i want to <a href="tag.php?tag=sleep">#sleep</a>.
this is a #cow => this is a <a href="tag.php?tag=cow">#cow</a>
the #duck is #sleeping => the <a href="tag.php?tag=duck">#duck</a> is <a href="tag.php?tag=sleeping">#sleeping</a>
#regex are @awesome #fun => <a href="tag.php?tag=regex">#regex</a> are @awesome <a href="tag.php?tag=fun">#fun</a>
如您所见,这也会处理字符串中的多个标记。