DBへのcsvインポートの1つに、「24h 30m」のようなフィールド値があります
これを分解して 2 つの数値セットを分離するにはどうすればよいですか? これが私がこれまでに持っているものです
$tasktime = "24h 30m";
$pieces = explode("h ", $tasktime);
echo $pieces[0]; // want this to echo 24
echo $pieces[1]; // want this to echo 30
簡単(デモ)
$pieces = array_map('intval', explode(' ', "24h 30m"));
これにより、文字列がスペースで分割され、2つの要素のそれぞれから整数値が取得されます。
さらなる参照:
$tasktime = "24h 30m";
$pieces = explode("h ", $tasktime);
$pieces[1] = rtrim($pieces[1], "m");
echo $pieces[0]; // want this to echo 24
echo $pieces[1]; // want this to echo 30
私は実際にはphpを知りませんが、これは私には理にかなっています。
これはうまくいきました。ありがとう!
$tasktime = "24h 30m";
$pieces = array_map('intval', explode(' ', $tasktime));
これを正規表現として記述する方法は次のとおりです。
$tasktime = "24h 30m";
preg_match('/(\d+)h (\d+)m/', $tasktime, $pieces);
echo $pieces[1]; // echoes 24
echo $pieces[2]; // echoes 30
常にその形式の場合、これを実行してDateIntervalオブジェクトを取得できます。
$tasktime = "24h 30m";
$interval = new DateInterval('PT' . strtoupper(str_replace(' ', '', $tasktime)));
print_r($interval);
出力
DateInterval Object
(
[y] => 0
[m] => 0
[d] => 0
[h] => 24
[i] => 30
[s] => 0
[invert] => 0
[days] =>
)