PHP - よく使う関数 - 文字列 - 置換


 クラウディア


1. 概要
2. str_replace 文字列の置換
3. rtrim, ltrim 空白を削除
4. substr_replace 部分文字列の置換
5. 参考サイト

1. 概要

 本ページは、文字列の置換に関する関数について、記述します。

2. str_replace 文字列の置換

 正規表現を伴わない文字列の置換には、「str_replace()」を使います。

$結果 = str_replace(mixed $変換前の文字列, mixed $変換後の文字列 , mixed $変換対象の文字列 [, int &$count ] )
 例えば、次ページ以降に出てくる、「print_r」という関数があって、これは、型に合わせて、出力するのですが・・・。

<?php
$array = array('foo', 'bar');
print_r($array);
 てなソースを書いて、実行すると。

Array
(
    [0] => foo
    [1] => bar
)
 という結果が得られるのですが、これをログに出力すると、やたら改行があって、都合が悪い。

<?php
$array = array('foo', 'bar');
print(str_replace(PHP_EOL, '', print_r($array, TRUE)));
 と、「str_replace()」をかませて、改行コードを省くと。

Array(    [0] => foo    [1] => bar)
 てな出力になります。  この部分、「【PHP】改行コードの削除 - Qiita」を参考にさせていただいたのですが、「PHP_EOL」という変数(定数?)を使うと、環境による改行コードをまるめてくれるそうで、とても都合がよいですね。

3. rtrim, ltrim 空白を削除

 詳細は「PHP マニュアル - 関数リファレンス - テキスト処理 - 文字列 - String 関数」をご参照ください。

rtrim ( string $str [, string $character_mask ] ) : string
ltrim ( string $str [, string $character_mask ] ) : string
 「rtrim」が、末尾の空白を削除、「ltrim」が、先頭の空白を削除します。  「空白を削除」とはいうものの、削除するのはいわゆる「ホワイトスペース」になります。  すなわち。
コード 16進 意  味
0x20 半角スペース
\t 0x09 タブ
\n 0x0A 改行
\r 0x0D 復帰
\0 0x00 NULL
\x0B 0x0B キャリッジリターン

 となります。

 2つ目の引数で、文字列を直接指定することができます。
 この場合は、指定した文字を削除します。

4. substr_replace 部分文字列の置換


substr_replace(
    array|string $string,
    array|string $replace,
    array|int $offset,
    array|int|null $length = null
): string|array
 という形式で、「$string」の部分文字列の「$offset」から「$length」数分の文字列を「$replace」という文字列へ変換します。  同じ文字列が、複数出現する可能性のある文字列で、先頭の部分だけ書き換えたい場合なんぞは、便利であります。

<?php
$string = 'hogehoge fugafuga hogehoge fugafuga';

print($string.PHP_EOL);
print(substr_replace($string, 'piyopiyo', 0, strlen('piyopiyo')).PHP_EOL);
 てなソースを書いて実行すると。

hogehoge fugafuga hogehoge fugafuga
piyopiyo fugafuga hogehoge fugafuga
 てな結果が得られます。

5. 参考サイト

 本ページは、下記のサイトを参考にさせていただきました。
PHP で文字列末尾を削除する3つの方法!

AbemaTV 無料体験