web-dev-qa-db-ja.com

文字列の途中に文字を追加する

おそらくこれには簡単な解決策があり、フェイスパームを引き起こします。時間は4文字の長い文字列、つまり1300として保存されています。

その文字列を13:00として表示しようとしています。私が現在やっていることよりもエレガントな解決策が必要だと感じています。

私は現在持っています:

$startTime = get_field($dayStart, $post->ID);
$endTime = get_field($dayEnd, $post->ID);

        for ($x=0; $x = 4; $x++){

            if(x == 2){
                $ST .= ':';
                $ET .= ':';
            } else {
                $ST .= $startTime[x];
                $ET .= $endTime[x];
            }

        }

$startTime = $ST;
$endTime = $ET;

文字列は常に4文字です。

12
Baadier Sydow
$time = "1300";    
$time = substr($time,0,2).':'.substr($time,2,2);

編集:

この問題の一般的な解決策を次に示します。

function insertAtPosition($string, $insert, $position) {
    return implode($insert, str_split($string, $position));
}
20
Ethan

このソリューションは1つの機能にすぎないため、

substr_replace('1300', ':', 2, 0);

http://php.net/substr_replace

13
Frankey
implode(":",str_split($time,2));
6
SheetJS
substr_replace( $yourVar, ':', -2, 0 );

945は9:45、12:45は1245になります。

2
arjentuin