3

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

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

我想从数组中删除流

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

并希望保持原状

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

谢谢和亲切的问候,

4

8 回答 8

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" } 
于 2012-07-12T14:01:07.190 回答
2

做一个 for 语句来获取你的数组的值,然后试试这个:

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


function remove_non_numeric($string) {
return preg_replace('/\D/', '', $string)
}
于 2012-07-12T14:05:57.370 回答
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);
?>
于 2012-07-12T14:11:01.050 回答
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;
}
于 2013-11-06T14:15:35.057 回答
0

你应该preg_replace使用[0-9]+

于 2012-07-12T14:00:14.067 回答
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);
于 2012-07-12T14:03:05.270 回答
0

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

结合这两个功能,您将能够从非数字字符中清除所有元素,

于 2012-07-12T14:03:25.703 回答
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

于 2016-12-27T14:33:20.800 回答