在php中,substr(信息学与系统-58600,-5)返回“ATICS”

在php中,substr(信息学与系统-58600,-5)返回“ATICS”,php,substr,Php,Substr,我知道以前有人问过这类问题,但没有一个能解决我的问题 我想捕获字符串INFORMATICS&SYSTEMS-58600的数字部分,即58600。 我正在尝试做substrINFORMATICS&SYSTEMS-58600,-5,它返回ATICS,这是字符串信息学第一部分的substr,但我想要最后一部分。 无论&出现在何处,其行为都是相同的。 我知道这是一个非常基本的错误,但是什么???我搞不懂。请帮我解决。此代码中的正则表达式与字符串末尾的数字匹配 <?php $str = "INF

我知道以前有人问过这类问题,但没有一个能解决我的问题

我想捕获字符串INFORMATICS&SYSTEMS-58600的数字部分,即58600。 我正在尝试做substrINFORMATICS&SYSTEMS-58600,-5,它返回ATICS,这是字符串信息学第一部分的substr,但我想要最后一部分。 无论&出现在何处,其行为都是相同的。
我知道这是一个非常基本的错误,但是什么???我搞不懂。请帮我解决。

此代码中的正则表达式与字符串末尾的数字匹配

<?php
  $str = "INFORMATICS&SYSTEMS-58600";
  $matches = array();
  preg_match("/\d+$/", $str, $matches);
  foreach($matches as $match) {
    echo $match;
  }
?>

可以参考

实际上PHP substr工作正常。 1.我在ajax中将此文本作为url查询传递,即get_data.php?dept='informatic&system',因此,后面的任何内容都被视为第二个参数

我找到了这个很好的答案,可以在url中以编码的形式传递ajax参数。
我试过了,只印了58600。echo substr‘信息学与系统-58600’,-5;你在代码中做什么是的,你是对的,问题是其他的。我试图通过jquery ajax调用将其作为url中的参数传递,即获取_data.php?dept='informatic&SYSTEMS-58600'。我发现我只获取dept='informatic'。这意味着&被视为url查询的第二个参数。在传递之前,您需要转义javascript中的内容。
58600
$str = 'INFORMATICS&SYSTEMS-58600';
preg_match_all('!\d+!', $str, $matches);
print_r($matches);