2

我的正则表达式需要一点帮助。

这是我所拥有的:

function formatLink($post) {
    if(preg_match('/^\>\>[0-9]{+}$/', $post)) {
        return "<font color=\"red\">".$post."</font>";
    } else {
        return "<font color=\"#b7b7b7\">".$post."</font>";  
    }
}
echo formatLink(">>86721678");

老实说,我不知道什么不起作用。它应该适用于任何这样的字符串:

>>1

>>87759

非常类似于类似图像板的帖子参考。

4

4 回答 4

4

去掉花括号。它们不是必需的。您还需要添加m修饰符以使其匹配任何行,而不仅仅是整个帖子。

另请注意,这仅在行上没有其他内容时才有效,甚至没有空格。你可能想像这样放松它:

/^\s*>>\s*\d+\s*$/m
于 2013-09-24T09:58:55.443 回答
0

尝试将正则表达式更改为

/^\>\>[0-9]*$/
于 2013-09-24T10:07:00.500 回答
0

我认为您的问题出在您的正则表达式中。改用这个:

if(preg_match('/^\>\>([0-9]+)$/', $post)) {

看到我从你的正则表达式中删除了大括号。

于 2013-09-24T09:59:37.957 回答
0

你忘记逃跑了!

<?php
function formatLink($post) {
    if(preg_match('/^\>\>[0-9]{+}$/', $post))
    {
        return "<font color=\"red\">".htmlentities($post)."</font>";
    }
    else
    {
        return "<font color=\"#b7b7b7\">".htmlentities($post)."</font>";  
    }
}

echo formatLink(">>86721678");

运行示例

于 2013-09-24T09:58:43.870 回答