如何在PHP中使用正则表达式创建主题标签?对于包含( - )或(。)的文本或用户名?

时间:2014-09-11 07:34:32

标签: php regex

$post = mysqli_real_escape_string($con, htmlspecialchars($_POST['post']));
$pat = array('/#(\w+)/', '/@(\w+)/');
$rep = array('<a href="#">#$1</a>','<a href="profile.php?user=$1">@$1</a>');
$post = preg_replace($pat, $rep, $post);

以上正则表达式代码适用于没有(.)和(-)的文本。我希望哪个可以支持#stack-overflow #stack.overflow

1 个答案:

答案 0 :(得分:1)

更改正则表达式,使其包含.-

$pat = array('/#([-.\w]+)/', '/@([-.\w]+)/');

但是,如果主题标签位于#sentence的末尾,您可能希望不允许它以.结尾。

$pat = array('/#([-.\w]*[-\w])/', '/@([-.\w]*[-\w])/');