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

intvalメソッド(http://php.net/manual/en/function.intval.php)とforeachループ(http://php.net/manual/en/control-)を確認することをお勧めします。 structure.foreach.php)。

これらの2つの機能を組み合わせると、数字以外の文字からすべての要素をクリアできます。

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