Php 什么';这场预赛是怎么回事?

Php 什么';这场预赛是怎么回事?,php,regex,Php,Regex,奇怪的输出。这导致我的cleanvar回显1和var仍然回显3。为什么会这样?这个regex的要点是只匹配整数,如1或2位数字。e、 g.(1,2,4,38,24) 他们在我的正则表达式中是一个问题吗?或者是什么导致了这种奇怪的行为 $cleanvar是真是假。您正在查找长度介于0到2位之间的数字(从字符串的开头到结尾,因此不允许使用其他字符) 编辑:匹配时返回1,不匹配时返回0 有关更多信息,请参见此项:$cleanvar为真或假。您正在查找长度介于0到2位之间的数字(从字符串的开头到结尾,因

奇怪的输出。这导致我的
cleanvar
回显
1
var
仍然回显
3
。为什么会这样?这个
regex
的要点是只匹配整数,如1或2位数字。e、 g.(1,2,4,38,24)


他们在我的正则表达式中是一个问题吗?或者是什么导致了这种奇怪的行为

$cleanvar
是真是假。您正在查找长度介于0到2位之间的数字(从字符串的开头到结尾,因此不允许使用其他字符)

编辑:匹配时返回1,不匹配时返回0


有关更多信息,请参见此项:

$cleanvar
为真或假。您正在查找长度介于0到2位之间的数字(从字符串的开头到结尾,因此不允许使用其他字符)

编辑:匹配时返回1,不匹配时返回0


有关更多信息,请参见此项:

$var
如果要设置,则应后跟一个数组。如果匹配>=1,您可能希望更改为
{1,2}
$var
如果需要设置,则应后跟一个数组。如果匹配>=1,您可能希望更改为
{1,2}

您的正则表达式是正确的,并且匹配正确。只要preg_match在得到匹配时返回1,否则返回0。请参见

您的正则表达式是正确的,并且匹配正确。只要preg_match在得到匹配时返回1,否则返回0。查看

如果要验证输入值,只需查看
preg\u match
的返回。使用
+
运算符匹配“前面的一个或多个元素”

如果需要从输入字段中提取数字,可以使用捕获组:

if (preg_match('/^[0-9]+$/', $var)) {
    // we matched a number only, so we know $var is clean
} else {
}

请注意,这与整个输入不匹配,但将返回在输入中找到的第一个数字
$var

如果您试图验证输入值,只需查看
preg\u match
的返回。使用
+
运算符匹配“前面的一个或多个元素”

如果需要从输入字段中提取数字,可以使用捕获组:

if (preg_match('/^[0-9]+$/', $var)) {
    // we matched a number only, so we know $var is clean
} else {
}


请注意,这与整个输入不匹配,但将返回在输入
$var

中找到的第一个数字。此外,匹配项希望自己在一行中找到数字。不确定这是否是目的,但如果实际数据包含的内容超过了简单的数字,则可能会导致遗漏。@jheddings,谢谢,我更新了我的答案以包含您所说的内容。它不允许任何其他角色出现在比赛中。你们认为投票这个问题仅仅是一个问题吗?有些蠢货喜欢投票否决我,就好像这是他们的工作一样。无论如何,再次感谢你的快速回答,如果你不同意反对票的话。请投票支持我。再次感谢各位!这个问题没有问题。这是一个很好的说明,并且正在寻找一个具体的答案。所讨论的代码/函数正是文档中所说的它应该做的。“没有显示出研究成果”/“没有用处”同样,配对者希望自己能找到一行上的数字。不确定这是否是目的,但如果实际数据包含的内容超过了简单的数字,则可能会导致遗漏。@jheddings,谢谢,我更新了我的答案以包含您所说的内容。它不允许任何其他角色出现在比赛中。你们认为投票这个问题仅仅是一个问题吗?有些蠢货喜欢投票否决我,就好像这是他们的工作一样。无论如何,再次感谢你的快速回答,如果你不同意反对票的话。请投票支持我。再次感谢各位!这个问题没有问题。这是一个很好的说明,并且正在寻找一个具体的答案。所讨论的代码/函数正是文档中所说的它应该做的。“不显示研究成果”/“不有用”可能值得注意的是,此模式将匹配空字符串。@wiseguy不,它不匹配。假设您的意思是“”为空字符串。它为什么不回来呢?主题开始,零位数,主题结束@wiseguy Strange-当我读到您对我的实际代码的评论时,我运行了相同的测试,对于您使用的调用目标字符串的数字(
$var=3
)的相同输入,它返回0。请参阅:
preg_match()
语法。可能值得注意的是,此模式将匹配空字符串。@wiseguy不匹配。假设您的意思是“”为空字符串。它为什么不回来呢?主题开始,零位数,主题结束@wiseguy Strange-当我读到您对我的实际代码的评论时,我运行了相同的测试,对于您使用的调用目标字符串的数字(
$var=3
)的相同输入,它返回0。请参阅:
preg_match()
语法。
if (preg_match('/([0-9]+)/', $var, $matches)) {
    $num = $matches[1];
} else {
}