PHP数组删除字符并仅保留数字

时间:2012-07-12 13:58:09

标签: php arrays

查找代码可以从数组中删除字符并仅显示数字。

array( 
    1=>123456 hello; / &, 
    2=>128767 ^% * ! ajsdb, 
    3=>765678 </ hello echo., 
); 

我想删除数组中的floowing

hello; / &
^% * ! ajsdb
</ hello echo.

并希望保持原样

array( 
    1=>123456, 
    2=>128767, 
    3=>765678, 
); 

谢谢和亲切的问候,

8 个答案:

答案 0 :(得分:13)

您想使用preg_replace将所有非数字字符替换为''

$arr = array(
    1 => "1234 perr & *",
    2 => "3456 hsdsd 3434"
);

foreach($arr as &$item) {
    $item = preg_replace('/\D/', '', $item);
}

var_dump($arr);

结果

array(2) { [1]=> string(4) "1234" [2]=> &string(8) "34563434" } 

答案 1 :(得分:2)

创建for语句以获取数组的值并尝试:

    foreach($arr as $value){
        $cleansedstring = remove_non_numeric($value);
        echo $cleansedstring;
    }


function remove_non_numeric($string) {
return preg_replace('/\D/', '', $string)
}

答案 2 :(得分:2)

<?php

// Set array
$array = array( 
    1 => "123456 hello; / &", 
    2 => "128767 ^% * ! ajsdb", 
    3 => "765678 </ hello echo.",
);

// Loop through $array
foreach($array as $key => $item){
    // Set $array[$key] to value of $item with non-numeric values removed
    // (Setting $item will not change $array, so $array[$key] is set instead)
    $array[$key] = preg_replace('/[^0-9]+/', '', $item);
}

// Check results
print_r($array);
?>

答案 3 :(得分:1)

function number_only($str){
    $slength = strlen($str);
    $returnVal = null;
    for($i=0;$i<$slength;$i++){
        if(is_numeric($str[$i])){
            $returnVal .=$str[$i];
        }
    }
    return $returnVal;
}

答案 4 :(得分:0)

您应该使用preg_replace

使用[0-9]+

答案 5 :(得分:0)

像这样

$values = array(
    1=>"123456 hello; / &",
    2=>"128767 ^% * ! ajsdb",
    3=>"765678 </ hello echo",
);

$number_values = array();
foreach($values as $value) {
    $pieces = explode(' ', $value);
    $numbers = array_filter($pieces, function($value) {
        return is_numeric($value);
    });

    if(count($numbers) > 0)
    {
        $number_values[] = current($numbers);
    }
}

print_r($number_values);

答案 6 :(得分:0)

我建议你看一下intval方法(http://php.net/manual/en/function.intval.php)和foreach循环(http://php.net/manual/en /control-structures.foreach.php)。

通过组合这两个功能,您可以清除非数字字符中的所有元素

答案 7 :(得分:0)

为什么不array_walk()http://php.net/manual/en/function.array-walk.php

$arr = array(
    1 => "1234 perr & *",
    2 => "3456 hsdsd 3434"
);

array_walk($arr, function(&$item) { 
    $item = preg_replace('/\D/', '', $item);
});

print_r($arr);

结果:

Array
(
    [1] => 1234
    [2] => 34563434
)

在线查看: http://sandbox.onlinephpfunctions.com/code/d63d07e58f9ed6984f96eb0075955c7b36509f81