preg_match($ pattern,$ subject,$ matches),$ matches似乎是所有匹配的数组,我只需要第一次出现的正则表达式模式,我希望匹配在找到匹配和存储后立即停止它在$ match中。可能吗?谢谢。
我不是在谈论贪婪的比赛(。*和。*?),一个例子如下,
$str = 'abcd,abed,abfd,abgd';
preg_match("/ab.d/", $str, $match);
我希望它只找到abcd而不是任何进一步的匹配,因为进一步的匹配对我来说是无用的,我认为需要更多的时间来处理。
我想你想这样: -
<?php
$str = 'abcd,abed,abfd,abgd';
if(preg_match("/ab.d/",$str ,$matches) !== false){ // check any match found or not
echo "match found:".$matches[0]; // when found print that match
}//after printing execution will stops successfully.
?>
输出: - https://3v4l.org/bErZL
preg_match
做你想要的 - 在第一场比赛后停止,而不是preg_match_all
,找到所有出现。在你的例子中:
$str = 'abcd,abed,abfd,abgd';
preg_match("/ab.d/", $str, $match);
echo $match[0];//abcd
如果提供了匹配,那么它将填充搜索结果。 $ matches [0]将包含与完整模式匹配的文本,$ matches [1]将具有与第一个捕获的带括号的子模式匹配的文本,依此类推。