在php中检查字符串是否以数字结尾
我想做一个变量测试,它以我知道的字符串开始;它以一个我不知道的数字结束,所以我做的测试是:在php中检查字符串是否以数字结尾,php,regex,preg-match,anchor,Php,Regex,Preg Match,Anchor,我想做一个变量测试,它以我知道的字符串开始;它以一个我不知道的数字结束,所以我做的测试是: foreach ($json as $key => $value) { if ($key == 'IF-MIB::ifDescr.'."$[0-9]") echo $key . '=>' . $value . '<br/>'; } foreach($json作为$key=>$value){ if($key==“if-MIB::ifDescr.”“$[0-9
foreach ($json as $key => $value) {
if ($key == 'IF-MIB::ifDescr.'."$[0-9]")
echo $key . '=>' . $value . '<br/>';
}
foreach($json作为$key=>$value){
if($key==“if-MIB::ifDescr.”“$[0-9]”)
回显$key.'=>'.$value.'
';
}
我用这个进行了测试,但不起作用。像这样:
$str = 'IF-MIB::ifDescr1';
if(preg_match('/^IF-MIB::ifDescr([0-9]+)$/', $str, $match)){
echo $match[1];
}
产出:
1
因此,为您的用例将所有这些放在一起:
foreach ($json as $key => $value) {
if (preg_match('/^IF-MIB::ifDescr[0-9]+$/', $key)){
echo $key . '=>' . $value . '<br/>';
}
}
foreach($json作为$key=>$value){
if(preg_match(“/^if-MIB::ifDescr[0-9]+$/”,$key)){
回显$key.'=>'.$value.'
';
}
}
开头的^
表示字符串必须以I开头,额外的括号和加上这次声明在IF-MIB::ifDescr
之后,可以有任意数量的数字
我只是想解释一下:
是字符串的开头^
匹配文字字符串IF-MIB::ifDescr
字符集[0-9]
到0
,9
一次或多次“贪婪”+
字符串结尾$
捕获组,用于返回其中匹配的内容(…)
因此,
$match[1]
是第一个捕获组捕获的内容,$match[0]
是完全匹配。目前,您只需检查它是否以字符串结尾
您要做的是对字符串运行,作为/[0-9]$/
。数字后面的美元符号表示它们必须在末尾
foreach ($json as $key => $value) {
if (preg_match("/[0-9]$/", $key) {
echo $key . '=>' . $value . '<br/>';
}
}
foreach($json作为$key=>$value){
如果(预匹配(“/[0-9]$/”,$key){
回显$key.'=>'.$value.'
';
}
}
请注意,如果您在开始时还需要其他组件,可以通过以下方式实现:
foreach ($json as $key => $value) {
if (preg_match("/^IF-MIB::ifDescr([0-9]+)$/", $key) {
echo $key . '=>' . $value . '<br/>';
}
}
foreach($json作为$key=>$value){
if(preg_match(“/^if-MIB::ifDescr([0-9]+)$/”,$key){
回显$key.'=>'.$value.'
';
}
}
开头的^
表示字符串必须以I
开头,额外的括号和加上此时间表示在IF-MIB::ifDescr
之后,可以有任意数量的数字
希望这有帮助:)“$[0-9]”“
当然是一个正则表达式,但对PHP来说,它只是另一个字符串
您需要使用一个计算正则表达式的函数。它将为您完成这项工作
在此之前,您应该知道,$[0-9]
实际上不会匹配您想要的内容,因为$
匹配一行或字符串的结尾。相反,请将其替换为捕获范围的结尾,如下所示-[0-9]$
我们希望匹配类似于IF-MIB::ifDescr1
的内容,而不是IF-MIB::ifDescr1
为了确保字符串以IF-MIB::ifDescr
开头,我们使用与$
相反的锚点,即^
——匹配行或字符串的开头。如果没有这些锚点,您将匹配字符串,如IF-MIB1::ifDescr1
您正在寻找
preg\u match($pattern,$subject,$matches)
其中,函数将返回布尔值
和$匹配
一个数组,其中包含从模式中找到的实例
人类的模式/[0-9]$/
是“以数值结尾的字符串”
$word = "asdfñlkas6";
var_dump(preg_match('/[0-9]$/', $word, $matches));
var_dump($matches);
将输出:
int(1)
array(1) {
[0]=> string(1) "6"
}
试试这个:
$str = 'IF-MIB::ifDescr.';
foreach ($json as $key => $value) {
$checker = trim($str,$value);
if(is_numeric($checker ))
echo $key . '=>' . $value . '<br/>';
}
$str='IF-MIB::ifDescr';
foreach($json作为$key=>$value){
$checker=trim($str,$value);
如果(是数字($checker))
回显$key.'=>'.$value.'
';
}
您可以使用获取最后一个字符,然后检查它是否为数字
foreach ($json as $key => $value) {
if (is_numeric(substr($key, -1))) {
echo $key . '=>' . $value . '<br/>';
}
}
foreach($json作为$key=>$value){
if(是数字(substr($key,-1))){
回显$key.'=>'.$value.'
';
}
}
就我个人而言,我可能会使用正则表达式,但为了完整性;从末尾修剪数字并进行比较:
if(($s = rtrim($key, '0..9')) == 'IF-MIB::ifDescr' && $s != $key)
echo $key . '=>' . $value . '<br/>';
}
if(($s=rtrim($key,'0..9'))=='if-MIB::ifDescr'&&&$s!=$key)
回显$key.'=>'.$value.'
';
}
是否要从字符串中获取最后一个字符?否,我正在使用一个变量进行测试,该变量以我知道的字符串开始,以我不知道的数字结束,例如:myvar='stringthatikonwit'。'numberthattonknowit'我否决了,因为:1.没有样本输入和期望的输出2.使用部分注册表证明搜索/研究不足ex语法和regex问号,但没有regex函数。3.搜索包含php
regex
检查字符串以数字结尾的问题,肯定会产生大量有用的页面。发布新的重复问题并回答这些问题会强化懒惰行为。以及
if(($s = rtrim($key, '0..9')) == 'IF-MIB::ifDescr' && $s != $key)
echo $key . '=>' . $value . '<br/>';
}