我想知道是否可以通过仅使用一个语句在 PHP 中获得正则表达式匹配?这个问题更像是一个挑战,看看这是否可能。
现在你必须做这样的事情:
preg_match('#(\d+)$#', $subject, $match);
echo $match[1];
如何$match
使用一个语句而不是两个语句访问?
我不想使用preg_replace
.
如果有可能关闭,那就更好了。我喜欢花哨的代码。
我不认为这是可能的。第三个参数$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;
}
}