関数ラインナップ
array_slice
PHP5.2.4 以降
- $length を省略すると無限大を指定したと見なされる。
-
$length に
NULL
を渡すと無限大を指定したと見なされる。
PHP5.2.3 以前
- $length を省略すると無限大を指定したと見なされる。
-
$length に
NULL
を渡すと0
を指定したと見なされる。
$preserve_keys を指定したいときの対処法
count関数を利用する
$array = array_slice($array, $offset, count($array), true);
array_splice
※ int $length = int
は意味不明なのでたぶん ドキュメンテーションバグ です。暇な方にはPHP本家のほうにバグレポート出していただけると(ry
PHP全バージョン
- $length を省略すると無限大を指定したと見なされる。
-
$length に
NULL
を渡すと0
を指定したと見なされる。
$replacement を指定したいときの対処法
count関数を利用する
array_splice($input, $offset, count($input), $replacement);
mb_substr
PHP5.4.8 以降
- $length を省略すると無限大を指定したと見なされる。
-
$length に
NULL
を渡すと無限大を指定したと見なされる。
PHP5.4.7 以前
- $length を省略すると無限大を指定したと見なされる。
-
$length に
NULL
を渡すと0
を指定したと見なされる。
$encoding を指定したいときの対処法
mb_strlen関数を利用する
$str = mb_substr($str, $start, mb_strlen($str, 'UTF-8'), 'UTF-8');
最初にmb_internal_encoding関数を実行して引数を省略する
mb_internal_encoding('UTF-8');
$str = mb_substr($str, $start);
最初にini_set関数を実行して引数を省略する
ini_set('mbstring.internal_encoding', 'UTF-8');
$str = mb_substr($str, $start);
備考: mb_internal_encoding()とini_get()の結果が異なるのでPHPのソースを読んで理解してみた
substr
PHP全バージョン
- $length を省略すると無限大を指定したと見なされる。
-
$length に
NULL
を渡すと0
を指定したと見なされる。