我使用preg_match
php函数仅在空白破折号和另一个空格( - )之前取数字。
我的所有科目都有一个数字,然后是这样的小描述;
3546425 - 小描述
我只需要数字;
3546425
我试过这个表达式,但它只返回一个值; 1
/([0-9])(。+?(?= - ))/
这是我的PHP代码;
$pattern = '/([0-9])(.+?(?= - ))/';
$subject = '3546425 - Small description';
echo preg_match($pattern, $subject);
我可以使用php的subtr函数,但是在第一个空格之前的那个数字并不总是相同的长度,它可以更短或更长,然后它将无法工作。
有人可以解释什么是错的吗?因为我已经对它进行了测试here并在那里突出显示整个数字,就像我想要的那样。
答案 0 :(得分:3)
如果你想让它保持非常简单并且你的字符串总是从数字开始,你可以强制它:
$string = "3546425 - Small Description";
$number = intval($string);
答案 1 :(得分:2)
这里有2个问题:
1)如果模式与给定主题匹配,则preg_match()返回1,否则返回0;如果发生错误,则返回FALSE。因此,如果您回显preg_match,则该值将为0或1 SOURCE
2)你需要添加一个输出参数($ matches),$ matches是一个匹配数组,所以你需要在这个数组中回显匹配!
$pattern = '/([0-9])(.+?(?= - ))/';
$subject = '3546425 - Small description';
preg_match($pattern, $subject, $matches);
echo $matches[0];
答案 2 :(得分:0)