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


how to make hashtags with regex in php? for texts or usernames containing (-) or (.)?

$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

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

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

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

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