Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有这个正则表达式:
<?PHP $test = 'this is a #test'; $regex = "#(\#.)#i"; $test = preg_replace($regex, '<strong>$1</strong>', $test); echo $test; ?>
我希望#之后的单词是strong,但我只有#t in strong,有人有建议吗?多谢
我的建议是这样的 -
$regex = "/#(\w+)/i";
表示\w任何单词字符。我还使用了+ 量词,表示我们必须在井号后面匹配至少一个单词字符。我假设我们不希望只有井号<strong> 我还从捕获组中删除了井号 (#),因为我不太确定你是否希望在用<strong>.
\w
+
<strong>
我要留给您的最后一点是,如果您发现自己在正则表达式中使用定界符,您可能需要考虑将其更改为您通常不会使用的东西。在您的情况下,您必须转义井号,但在我的示例中,我已将分隔符更改为斜杠。它也使它更容易阅读:)
用于+匹配任何一个或多个数字文字。*如果要在 .0之后包含出现的文字,请使用#.
*
0
#
$regex = "#(\#.+)#i";
有关详细信息,请参阅PHP Regex Repetition文档。
尝试这个:
<?PHP $test = 'this is a #test'; $regex = "#(\#.*)#i"; $test = preg_replace($regex, '<strong>$1</strong>', $test); echo $test; ?>
问题是 。仅作为单个字符匹配。
您需要设置要保存的符号数量:
$regex = "#(\#.{4})#i";