0

我有这个正则表达式:

<?PHP
$test = 'this is a #test';
$regex = "#(\#.)#i";
$test = preg_replace($regex, '<strong>$1</strong>', $test);
echo $test;
?>

我希望#之后的单词是strong,但我只有#t in strong,有人有建议吗?多谢

4

4 回答 4

3

我的建议是这样的 -

$regex = "/#(\w+)/i";

表示\w任何单词字符。我还使用了+ 量词,表示我们必须在井号后面匹配至少一个单词字符。我假设我们不希望只有井号<strong> 我还从捕获组中删除了井号 (#),因为我不太确定你是否希望在用<strong>.

我要留给您的最后一点是,如果您发现自己在正则表达式中使用定界符,您可能需要考虑将其更改为您通常不会使用的东西。在您的情况下,您必须转义井号,但在我的示例中,我已将分隔符更改为斜杠。它也使它更容易阅读:)

于 2012-11-10T01:05:52.540 回答
2

用于+匹配任何一个或多个数字文字。*如果要在 .0之后包含出现的文字,请使用#.

   $regex = "#(\#.+)#i";

有关详细信息,请参阅PHP Regex Repetition文档。

于 2012-11-10T00:58:22.867 回答
0

尝试这个:

<?PHP
$test = 'this is a #test';
$regex = "#(\#.*)#i";
$test = preg_replace($regex, '<strong>$1</strong>', $test);
echo $test;
?>

问题是 。仅作为单个字符匹配。

于 2012-11-10T00:58:34.487 回答
-1

您需要设置要保存的符号数量:

$regex = "#(\#.{4})#i";
于 2012-11-10T00:57:33.850 回答