2

I need a little help with my regular expression.

Here is what I've got:

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");

And honestly I don't know what doesn't it work. It should work for any string like this:

>>1

>>87759

Very similar to imageboard-like post ref.

4

4 に答える 4

4

中かっこを削除します。それらは必要ありません。m修飾子を追加して、投稿全体だけでなく、任意の行で一致できるようにする必要もあります。

また、これは行に文字通り何もない場合にのみ機能することに注意してください。スペースもありません。次のようにリラックスしたい場合があります。

/^\s*>>\s*\d+\s*$/m
于 2013-09-24T09:58:55.443 に答える
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 に答える
0

あなたの問題は正規表現にあると思います。代わりにこれを使用してください:

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

正規表現から中かっこを削除したことを確認してください。

于 2013-09-24T09:59:37.957 に答える