仅返回空格前的数字

时间:2016-03-07 13:14:42

标签: php regex

我使用preg_match php函数仅在空白破折号和另一个空格( - )之前取数字。

我的所有科目都有一个数字,然后是这样的小描述;

  

3546425 - 小描述

我只需要数字;

  

3546425

我试过这个表达式,但它只返回一个值; 1

  

/([0-9])(。+?(?= - ))/

这是我的PHP代码;

$pattern = '/([0-9])(.+?(?= - ))/';
$subject = '3546425 - Small description';

echo preg_match($pattern, $subject);

我可以使用php的subtr函数,但是在第一个空格之前的那个数字并不总是相同的长度,它可以更短或更长,然后它将无法工作。

有人可以解释什么是错的吗?因为我已经对它进行了测试here并在那里突出显示整个数字,就像我想要的那样。

3 个答案:

答案 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];

ONLINE EXAMPLE

答案 2 :(得分:0)

使用此正则表达式(\d+)(末尾有空格),然后在1组中获取元素。

您可以在regex101.com查看此正则表达式。

enter image description here