substr_replace

文字列の一部を置換する

説明

stringarray substr_replace(
    arraystring $string,
    arraystring $replace,
    arrayint $offset,
    arrayintnull $length = null
)

substr_replaceは、文字列 stringoffset および (オプションの) length パラメータで区切られた部分を replace で指定した文字列に置換します。

パラメータ

string

入力文字列。

文字列の配列を指定することもでき、各文字列について順に置換を行います。 この場合、他のパラメータ replaceoffset および length がスカラ値なら それを各入力文字列に順次適用し、配列なら各入力文字列に対応する要素の値を適用します。

replace

置換する文字列。

offset

offset が負ではない場合、置換は stringoffset 番目の文字から始まります。

offset が負の場合、置換は string の終端から offset 番目の文字から始まります。

length

正の値を指定した場合、 string の置換される部分の長さを表します。 負の場合、置換を停止する位置が string の終端から何文字目であるかを表します。このパラメータが省略された場合、 デフォルト値は strlen(string)、すなわち、 string の終端まで置換することになります。 当然、もし length がゼロだったら、 この関数は string の最初から offset の位置に replace を挿入するということになります。

戻り値

結果の文字列を返します。もし、string が配列の場合、配列が返されます。

変更履歴

バージョン 説明
8.0.0 length は、nullable になりました。

例1 シンプルな substr_replace の例

<?php
$var = 'ABCDEFGH:/MNRPQR/';
echo "Original: $var<hr />\n";

/* 以下の2つの例は、全ての $var で 'bob' で置換します。 */
echo substr_replace($var, 'bob', 0) . "<br />\n";
echo substr_replace($var, 'bob', 0, strlen($var)) . "<br />\n";

/* $var の先頭に 'bob' を挿入します */
echo substr_replace($var, 'bob', 0, 0) . "<br />\n";

/* 次の2つの例は、$var の 'MNRPQR' を 'bob'で置換します */
echo substr_replace($var, 'bob', 10, -1) . "<br />\n";
echo substr_replace($var, 'bob', -7, -1) . "<br />\n";

/* $var から 'MNRPQR' を削除します */
echo substr_replace($var, '', 10, -1) . "<br />\n";
?>

例2 substr_replace で複数の文字列を一度に置換する例

<?php
$input = array('A: XXX', 'B: XXX', 'C: XXX');

// シンプルなケース: 各文字列の XXX を YYY で置換します
echo implode('; ', substr_replace($input, 'YYY', 3, 3))."\n";

// より複雑で、各文字列で置換する値が異なるケース
$replace = array('AAA', 'BBB', 'CCC');
echo implode('; ', substr_replace($input, $replace, 3, 3))."\n";

// 置換する文字数が異なるケース
$length = array(1, 2, 3);
echo implode('; ', substr_replace($input, $replace, 3, $length))."\n";
?>

上の例の出力は以下となります。

A: YYY; B: YYY; C: YYY
A: AAA; B: BBB; C: CCC
A: AAAXX; B: BBBX; C: CCC

注意

注意: この関数はバイナリデータに対応しています。