存在或将值放入 preg_match()
Exists or put value in preg_match()
我有这个与 preg_match()
:
一起使用的正则表达式
^#admin#products#p-([0-9]+)$/
如果 p-([0-9]+)
未找到,如何在此正则表达式中输入 p-1
?
编辑
对于:
preg_match(^#admin#products#p-([0-9]+)$/, '/^admin#products#p-3$/', $matches)
$mathes 将
array(
[0] => '3'
)
而对于
preg_match(^#admin#products#p-([0-9]+)$/, '/^admin#products$/', $matches)
我希望 $mathes 成为
array(
[0] => '1'
)
我在 中提到的方法是您可以将 $result
输出变量设置为 1
并使用包含在可选组中的 p-([0-9]+)
的模式: (?:p-([0-9]+))?
。如果Group 1的值不为空,则设置为$matches[1]
,否则保持1
:
$res = '1';
if (preg_match('~\^admin#products#(?:p-([0-9]+))?~', '/^admin#products#p-3$/', $matches)) {
if (!empty($matches[1])) {
$res = $matches[1];
}
}
查看 PHP demo,输出为 3
,因为第 1 组匹配。如果没有匹配,$res
将保持 1
.
我有这个与 preg_match()
:
^#admin#products#p-([0-9]+)$/
如果 p-([0-9]+)
未找到,如何在此正则表达式中输入 p-1
?
编辑
对于:
preg_match(^#admin#products#p-([0-9]+)$/, '/^admin#products#p-3$/', $matches)
$mathes 将
array(
[0] => '3'
)
而对于
preg_match(^#admin#products#p-([0-9]+)$/, '/^admin#products$/', $matches)
我希望 $mathes 成为
array(
[0] => '1'
)
我在 $result
输出变量设置为 1
并使用包含在可选组中的 p-([0-9]+)
的模式: (?:p-([0-9]+))?
。如果Group 1的值不为空,则设置为$matches[1]
,否则保持1
:
$res = '1';
if (preg_match('~\^admin#products#(?:p-([0-9]+))?~', '/^admin#products#p-3$/', $matches)) {
if (!empty($matches[1])) {
$res = $matches[1];
}
}
查看 PHP demo,输出为 3
,因为第 1 组匹配。如果没有匹配,$res
将保持 1
.