Php preg_match()匹配一种模式的案例?
根据数组的每个部分从使用preg_match()开始的内容,我如何将1个数组排序为2个数组 我知道如何使用1个表达式,但我不知道如何使用2个表达式。 到目前为止,我可以做到(不要问我为什么不使用strps()-我需要使用正则表达式): 所以我的问题是:是否可以使用1 preg_match()函数来实现这一点? 请忽略数组中的SOMETHING部分,这表明仅使用一个if-else语句无法解决此问题Php preg_match()匹配一种模式的案例?,php,regex,preg-match,Php,Regex,Preg Match,根据数组的每个部分从使用preg_match()开始的内容,我如何将1个数组排序为2个数组 我知道如何使用1个表达式,但我不知道如何使用2个表达式。 到目前为止,我可以做到(不要问我为什么不使用strps()-我需要使用正则表达式): 所以我的问题是:是否可以使用1 preg_match()函数来实现这一点? 请忽略数组中的SOMETHING部分,这表明仅使用一个if-else语句无法解决此问题 谢谢。您可以在第三个参数中使用一个替代项来进行preg_match,它包含匹配的regexp部分 p
谢谢。您可以在第三个参数中使用一个替代项来进行
preg_match
,它包含匹配的regexp部分
preg_match('/^(?:F|BBC)/', $part, $match);
switch ($match) {
case 'F':
$f[] = $part;
break;
case 'BBC':
$bbc[] = $part;
break;
default:
// Not F or BBC
}
您可以将替换项与第三个参数一起用于
preg_match
,其中包含匹配的regexp部分
preg_match('/^(?:F|BBC)/', $part, $match);
switch ($match) {
case 'F':
$f[] = $part;
break;
case 'BBC':
$bbc[] = $part;
break;
default:
// Not F or BBC
}
甚至可以不使用任何循环、开关或其他任何东西(比公认答案的解决方案更快、更有效)
正则表达式很好,但它不是万能的。甚至可以不使用任何循环、开关或其他任何东西(比公认答案的解决方案更快、更有效)
正则表达式很好,但不是万能的。使用一个函数返回F、BBC或两者都不返回,然后与that@Mouser-如果这样做,我将如何确定是否将值推入数组?它返回布尔值还是什么?@user3530525
/^(F)|(BBC)
/将找到匹配项preg_match
有第三个参数,名为$matches
。这将返回所创建的结果。您可以使用if/else将内容推送到正确的数组中。使用一个函数返回F、BBC或两者都不返回,然后与that@Mouser-如果这样做,我将如何确定是否将值推入数组?它返回布尔值还是什么?@user3530525/^(F)|(BBC)
/将找到匹配项preg_match
有第三个参数,名为$matches
。这将返回所创建的结果。您可以使用if/else将内容推送到正确的数组中。非常感谢!效果很好。我在我的foreach循环中使用了它,匹配变成了一个数组,所以我只做了$match[0],它可以完美地工作!非常感谢:)非常感谢!效果很好。我在我的foreach循环中使用了它,匹配变成了一个数组,所以我只做了$match[0],它可以完美地工作!非常感谢:)
<?php
preg_match_all("/(?:(^F.*$)|(^BBC.*$))/m", implode(PHP_EOL, $gen), $matches);
$f = isset($matches[1]) ? $matches[1] : array();
$bbc = isset($matches[2]) ? $matches[2] : array();
<?php
$c = count($gen);
$f = $bbc = array();
for ($i = 0; $i < $c; ++$i) {
if (strpos($gen[$i], "F") === 0) {
$f[] = $gen[$i];
}
elseif (strpos($gen[$i], "BBC") === 0) {
$bbc[] = $gen[$i];
}
}