我有这个正则表达式:
<?PHP
$test = 'this is a #test';
$regex = "#(\#.)#i";
$test = preg_replace($regex, '<strong>$1</strong>', $test);
echo $test;
?>
我希望#之后的单词很强,但我只有#t强,有人有建议吗? 非常感谢
答案 0 :(得分:3)
我的建议是这样的 -
$regex = "/#(\w+)/i";
\w
表示任何word character。我还使用+
quantifier表示我们必须在哈希符号后匹配至少一个单词字符。我假设我们不希望只有哈希符号为<strong>
我也从捕获组中删除了哈希符号(#),因为我不太确定你希望在包装后保留该字符与<strong>
。
最后一点我会告诉你的是,如果你发现自己在正则表达式中使用delimiter,你可能会考虑将其改为你不会正常使用的东西。在你的情况下你必须逃避哈希标志,但在我的例子中,我已经将分隔符更改为斜杠。它使阅读起来更容易一些:)
答案 1 :(得分:2)
答案 2 :(得分:0)
试试这个:
<?PHP
$test = 'this is a #test';
$regex = "#(\#.*)#i";
$test = preg_replace($regex, '<strong>$1</strong>', $test);
echo $test;
?>
问题是。仅匹配单个字符。
答案 3 :(得分:-1)
您需要设置要保存的符号数量:
$regex = "#(\#.{4})#i";