これは、正規表現を使用せずに実行できます。
- ユーザー入力を取得し
,
、区切り文字として爆発すると、すべての数値の配列が得られます。
- 次に、ステートメントを使用して
if
、文字列にダッシュが含まれているかどうかを確認します。
- その場合は
explode
、 delimiter を使用して再度-
. これで2つの数字が得られます
range()
その範囲内の数値の配列を作成するために使用します
implode()
コンマで結合するために使用します。
便利な機能として:
コード:
function fill_string_gaps($input)
{
$parts = explode(',', $input);
$resultArray = array();
foreach ($parts as $part) {
if(strpos(trim($part), '-')) {
list($num1, $num2) = explode('-', $part);
$expanded_num_array = range($num1, $num2);
$resultArray = array_merge($resultArray, $expanded_num_array);
} else {
$resultArray[] = trim($part);
}
}
$comma_separated = implode(', ', $resultArray);
return $comma_separated;
}
使用法:
$input = '1, 4, 7, 20-25, 31, 46, 100';
echo fill_string_gaps($input;)
テストケース:
echo fill_string_gaps('1-5');
echo fill_string_gaps('1-5, 12, 24');
echo fill_string_gaps('2, 2, 4, 5-8');
出力:
1, 2, 3, 4, 5
1, 2, 3, 4, 5, 12, 24
2, 2, 4, 5, 6, 7, 8
実際に見てください!