【发布时间】:2016-10-06 20:14:05
【问题描述】:
我想在很长的文本中找到第一个匹配的字符串。我知道我可以使用 preg_grep() 并获取返回数组的第一个元素。但是,如果我只需要第一场比赛(或者我知道事先只有一场比赛),那么这样做是没有效率的。有什么建议吗?
【问题讨论】:
我想在很长的文本中找到第一个匹配的字符串。我知道我可以使用 preg_grep() 并获取返回数组的第一个元素。但是,如果我只需要第一场比赛(或者我知道事先只有一场比赛),那么这样做是没有效率的。有什么建议吗?
【问题讨论】:
preg_match() 返回的数量 次模式匹配。那将是 0 次(不匹配)或 1 次 因为 preg_match() 将停止 在第一场比赛之后搜索。 preg_match_all() 相反会 一直持续到结束 主题。如果 preg_match() 返回 FALSE 发生错误。
【讨论】:
preg_match() 的第三个参数(如果给定)将填充匹配项。
下面是一个例子:
$string = 'A01B1/00asdqwe';
$pattern = '~^[A-Z][0-9][0-9][A-Z][0-9]+~';
if (preg_match($pattern, $string, $match) ) {
echo "We have matched: $match[0]\n";
} else {
echo "Not matched\n";
}
您可以尝试print_r($match) 检查数组结构并测试您的正则表达式。
正则表达式的旁注:
【讨论】: