我有一个像“My String 2”这样的字符串,我只想得到 num 值“2”。我尝试按照您在下面看到的那样做,但结果等于 0。
$AlphaSURV1="My String 2";
$NumSURV1=intval($AlphaSURV1);
echo $NumSURV1;
你能帮我解决这个问题吗?
谢谢
我有一个像“My String 2”这样的字符串,我只想得到 num 值“2”。我尝试按照您在下面看到的那样做,但结果等于 0。
$AlphaSURV1="My String 2";
$NumSURV1=intval($AlphaSURV1);
echo $NumSURV1;
你能帮我解决这个问题吗?
谢谢
您可以使用匹配非数字的正则表达式去除非数字字符:
$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
如果您在服务器上启用了严格检查,则会出现错误)
为了捕获字符串中的最后一组数字,您可以使用正则表达式:
$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));