0

次のような文字列があるとします。

$string = '.30..5..12..184..6..18..201..1.'

各整数を取り出し、ピリオドを取り除き、それらを配列に格納するにはどうすればよいでしょうか?

4

6 に答える 6

3

これを使用できます。文字列をすべてのピリオドで分割します...しかし、これはまったく同じ場合にのみ機能します。たとえば 25.sdg.12 のように他のものが途中にある場合は機能しません。

    <?php
    $my_array = explode("..",$string);
    $my_array[0] = trim($my_array[0]); //This removes the period in first part making '.30' into '30'
  ///XXX  $my_array[-1] = trim($my_array[-1]); XXX If your string is always the same format as that you could just use 7 instead.

確認したところ、PHP は負のインデックスをサポートしていませんが、配列リストを数えてそのまま使用できます。元:

$my_index = count($my_array) - 1;
$my_array[$my_index] = trim($my_array[$my_index]); //That should replace '1.' with '1' no matter what format or length your string is.
?>
于 2013-01-11T01:40:54.857 に答える
0

1 行のソリューション:

print_r(explode("..",substr($string,1,-1)));
于 2013-01-11T01:51:26.213 に答える
0

私が考えることができたすべて。

<?php
$string = '.30..5..12..184..6..18..201..1.';
$r_string = str_replace("..", ",", $string);
$r_string = str_replace(".", ",", $r_string);
print_r(explode(",", $r_string));
?>

または、変数内の配列にしたい場合

<?php
$string = '.30..5..12..184..6..18..201..1.';
$r_string = str_replace("..", ",", $string);
$r_string = str_replace(".", ",", $r_string);
$arr_ex = explode(",", $r_string);
print_r($arr_ex);
?>
于 2013-01-11T01:47:00.437 に答える
0

他の誰かがこれを投稿しましたが、コードを削除しました。意図したとおりに機能します:

<?php
$string = '.30..5..12..184..6..18..201..1.';

$numbers = array_filter (explode ('.', $string), 'is_numeric');

print_r ($numbers);
?>

出力:

Array (
[1] => 30
[3] => 5
[5] => 12
[7] => 184
[9] => 6
[11] => 18
[13] => 201
[15] => 1 )
于 2013-01-11T01:50:18.990 に答える
0

これを試して ..

$string = '.30..5..12..184..6..18..201..1.';
$new_string =str_replace(".", "",  str_replace("..", ",", $string));
print_r (explode(",",$new_string));
于 2013-01-11T01:50:30.070 に答える
0

これにより、文字列が配列に分割され、ループして数値が取得されます。

$string = '.30..5..12..184..6..18..201..1.';
$pieces = explode('.', $string);

foreach($pieces as $key=>$val) {
    if( is_numeric($val) ) {
    $numbers[] = $val;
    }
}

あなたの数字は配列になります$numbers

于 2013-01-11T01:43:18.900 に答える