1

1 つのステートメントのみを使用して、PHP で正規表現の一致を取得できるかどうか疑問に思っています。この質問は、これが可能かどうかを確認するためのより大きな課題です。

今、あなたは次のようなことをしなければなりません:

preg_match('#(\d+)$#', $subject, $match);
echo $match[1];

$match2 つのステートメントではなく、1 つのステートメントでアクセスするにはどうすればよいですか?

使いたくないpreg_replace

クロージャーで可能であれば、より良いです。派手なコードが大好きです。

4

1 に答える 1

3

ありえないと思います。3 番目の引数$matchesは常に配列です。PHP ドキュメントから:

一致が提供された場合は、検索結果が入力されます。$matches[0] には完全なパターンに一致したテキストが含まれ、$matches[1] には最初にキャプチャされた括弧で囲まれたサブパターンに一致したテキストが含まれます。

ソース: http://www.php.net/manual/en/function.preg-match.php

キャプチャ括弧のグループが 1 つしかない正規表現がたくさんある場合は、目的に合わせてショートカット関数を作成できます。

function preg_match_one($regex, $subject) {

    if(preg_match($regex, $subject, $matches)) {
        return $matches[1];
    }
    else {
        return false;
    }

}
于 2013-06-10T07:20:42.280 に答える