Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中检查字符串是否以数字结尾_Php_Regex_Preg Match_Anchor - Fatal编程技术网

在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/>';
}