Cのときと同じく、%sはホワイトスペース以外を意味するので、Cのときと同じように対処する
#!/usr/bin/php -q <? $t="123 45 67890"; // a='123 45',b=' 67',c='890' を期待している sscanf( $t, "%6s%3s%3s", $a, $b, $c ); print("a='$a', b='$b', c='$c'\n"); // とりあえず対象文字を「改行以外」にしてみる sscanf( $t, "%6[^\n]%3[^\n]%3[^\n]", $a, $b, $c ); print("a='$a', b='$b', c='$c'\n"); ?>
$ ./sscanf.php a='123', b='45', c='678' a='123 45', b=' 67', c='890'
#!/usr/bin/php -q <? $t="123 45 67890"; list( $a,$b,$c ) = bunkatsu( $t, 6,3,3 ); print("a='$a', b='$b', c='$c'\n"); // ★文字列を分割する function bunkatsu( /* $text, $num, $num, $num, ... */ ) { $arglist = func_get_args(); $text = array_shift( $arglist ); $start=0; $arr = array(); foreach( $arglist as $length ){ $arr[] = substr( $text, $start, $length ); $start += $length; } return $arr; } ?>