如何提取字符串的num部分

时间:2012-06-04 13:44:07

标签: php

我有一个像“My String 2”这样的字符串,我喜欢只获得num值“2”。 我试着这样做你在下面看到,但结果是0到

$AlphaSURV1="My String 2";
$NumSURV1=intval($AlphaSURV1);
echo $NumSURV1;

你能帮我解决一下吗?

由于

2 个答案:

答案 0 :(得分:1)

您可以使用与非数字匹配的正则表达式去除非数字字符:

$NumSURV1 = preg_replace("/[^0-9]/", "", $AlphaSURV1);

好吧,您对原始帖子的评论使得这个答案无效。如果您将"3 some text 5"放入我提供的preg_replace()答案中,您将获得"35",而不只是"5"。如果我猜测并假设您只想要字符串中的最后一块文本而不是所有数字,并假设有空格,那么您应该这样做:

$exp = explode(" ", $AlphaSURV1);
$NumSURV1 = $exp[count($exp) - 1];

哪个很难看,但它会在空格上拆分你的输入字符串,并为你提供结果数组中的最后一个元素。

第二个答案更漂亮的方式,感谢@nickb:

$exp = explode(" ", $AlphaSURV1);
$NumSURV1 = end($exp);

(顺便说一下,你可以$NumSURV1 = end(explode(" ", $AlphaSURV1));因为它有效,但是如果你在服务器上启用了严格的检查,你会收到Strict Standards: Only variables should be passed by reference错误。

答案 1 :(得分:1)

为了捕获字符串中的最后一组数字,您可以使用正则表达式:

$str = "123 test 29";
preg_match("/[0-9]+$/", $str, $matches);
var_dump($matches[0]); # 29

这适用于以下所有情况,包括字符串末尾缺少空格,前导数字和多个数字:

"1"        => 1
"test 2"   => 2
"test 34"  => 34
"5 test 6" => 6
"7test8"   => 8

请注意,如果您只想获取字符串中的最后一个字符并将其视为数字,则可以使用以下字符:

$str = "My String 2";

$digit = intval(substr($str, -1));