如何将带有数字和空格的字符串转换为int

时间:2011-06-10 14:33:51

标签: php string numbers

我有一个小问题。我尝试将类似“1 234”的字符串转换为数字:1234 我无法到达那里。该字符串是从网站上删除的。有可能不是那里的空间吗?因为我已经尝试过像str_replace和preg_split这样的方法来获取空间而没有任何东西。另外(int)$ abc只取第一个数字(1)。 如果有人有想法,我会更加满意!谢谢!

6 个答案:

答案 0 :(得分:10)

这就是我处理它的方式......

<?php

$string = "Here! is some text, and numbers 12 345, and symbols !£$%^&";

$new_string = preg_replace("/[^0-9]/", "", $string);

echo $new_string // Returns 12345

?>

答案 1 :(得分:8)

intval(preg_replace('/[^0-9]/', '', $input))

答案 2 :(得分:4)

抓取网站总是需要特定的代码,您知道如何接收输入 - 并且您编写了使其可用的代码。

这就是为什么第一个答案仍然是str_replace。

$iInt = (int)str_replace(array(" ", ".", ","), "", $iInt);

答案 3 :(得分:1)

$str = "1 234";
$int = intval(str_replace(' ', '', $str)); //1234

答案 4 :(得分:0)

我刚刚遇到了同样的问题,但是提供的答案并未涵盖我遇到的所有不同情况...

所以我做了这个功能(感谢 Dan,这个想法在我脑海中浮现):

function customCastStringToNumber($stringContainingNumbers, $decimalSeparator = ".", $thousandsSeparator = " "){
    $numericValues = $matches = $result = array();
    $regExp = null;
    $decimalSeparator = preg_quote($decimalSeparator);
    $regExp = "/[^0-9$decimalSeparator]/";
    preg_match_all("/[0-9]([0-9$thousandsSeparator]*)[0-9]($decimalSeparator)?([0-9]*)/", $stringContainingNumbers, $matches);
    if(!empty($matches))
        $matches = $matches[0];
    
    foreach($matches as $match):
        $numericValues[] = (float)str_replace(",", ".", preg_replace($regExp, "", $match));
    endforeach;
    $result = $numericValues;
    if(count($numericValues) === 1)
        $result = $numericValues[0];

    return $result;
}

所以,基本上,这个函数提取包含在字符串中的所有数字,无论有多少文本,识别小数点分隔符并将每个提取的数字作为浮点数返回。

您可以使用 $decimalSeparator 参数指定一个国家/地区使用的小数点分隔符。

答案 5 :(得分:0)

使用此代码删除任何其他字符,如 .,:"'\/!@#$%^&*()a-zA-Z

$string = "This string involves numbers like 12 3435 and 12.356 and other symbols like !@# then the output will be just an integer number!";

$output = intval(preg_replace('/[^0-9]/', '', $string));

var_dump($output);