1

我想知道是否可以通过仅使用一个语句在 PHP 中获得正则表达式匹配?这个问题更像是一个挑战,看看这是否可能。

现在你必须做这样的事情:

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

如何$match使用一个语句而不是两个语句访问?

我不想使用preg_replace.

如果有可能关闭,那就更好了。我喜欢花哨的代码。

4

1 回答 1

3

我不认为这是可能的。第三个参数$matches始终是一个数组。来自 PHP 文档:

如果提供了匹配项,则将其填充为搜索结果。$matches[0] 将包含与完整模式匹配的文本,$matches[1] 将包含与第一个捕获的带括号的子模式匹配的文本,依此类推。

来源:http ://www.php.net/manual/en/function.preg-match.php

如果您有很多只有一组捕获括号的正则表达式,您可以为您的目的创建一个快捷功能:

function preg_match_one($regex, $subject) {

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

}
于 2013-06-10T07:20:42.280 回答