[PHP] str_replaceと配列 [文字列置換]

この記事は約6分で読めます。
スポンサーリンク

(2024年10月)

置換対象を配列

str_replace(文字列置換)の第三引数(置換対象)は、配列でも有効。

$array = [“aaa_001″,”aaa_002″,”aaa_003”] ;

print_r($array) ;

Array
(
[0] => aaa_001
[1] => aaa_002
[2] => aaa_003
)

$array = str_replace(“a”,”b”,$array) ;// 「a」を「b」にする

print_r($array) ;

Array
(
[0] => bbb_001
[1] => bbb_002
[2] => bbb_003
)

置換前後を配列

str_replaceの第一/第二引数(置換前/後)も、配列にできる。

$array = [“aaa_001″,”aaa_002″,”aaa_003”] ;

Array
(
[0] => aaa_001
[1] => aaa_002
[2] => aaa_003
)

$search = [“a”,”b”] ;
$replace = [“b”,”c”] ;

$array = str_replace($search,$replace,$array) ;

print_r($array) ;

Array
(
[0] => ccc_001
[1] => ccc_002
[2] => ccc_003
)

コレは、「a」を「b」にして、その後、「b」を「c」にするというコトである。

str_replace

結果として、「a」が「c」になる。

「後(アト/阿斗)」がなければ、その箇所は消えてしまう。

str_replace

$array = [“aaa_001″,”aaa_002″,”aaa_003”] ;

$search = [“a”,”b”] ;
$replace = [“b”] ;

$array = str_replace($search,$replace,$array) ;

print_r($array) ;

Array
(
[0] => _001
[1] => _002
[2] => _003
)

「a」を「b」にした後、「b」の対応がないので、結果として「b」は消えるとゆぅコトね。

-----

$array = [“aaa_001″,”aaa_002″,”aaa_003”] ;

$search = [“a”,”_”,”0″] ;
$replace = [] ;

$array = str_replace($search,$replace,$array) ;

print_r($array) ;

Array
(
[0] => 1
[1] => 2
[2] => 3
)

「a」も「_(安駄婆)」も「0」も消えるとゆぅコトね。

いくつかの文字を消すタメに、str_replaceを繰り返してティマ々ヤルよりは楽。

対応の明瞭化

ただ、前後の数が増えると、何が何ヤラで意味不明となる。

$array = [“aaa_001″,”aaa_002″,”aaa_003”] ;

$search = [“a”,”0″,”1″,”_”,”2″] ;
$replace = [“b”,”1″,”*”,”@”,”5″] ;

$array = str_replace($search,$replace,$array) ;

print_r($array) ;

Array
(
[0] => bbb@***
[1] => bbb@**5
[2] => bbb@**3
)

なので、連想配列で対応付けを行うと分かり易い。

$array = [“aaa_001″,”aaa_002″,”aaa_003”] ;

$taiou = [
“a” => “b”,
“0” => “1”,
“1” => “*”,
“_” => “@”,
“2” => “5”
] ;

$search = array_keys($taiou) ;// array_keys:配列のキー(今回は場合は「前」)を返す
$replace = array_values($taiou) ;// array_values:配列の値(今回は場合は「後」)を返す

$array = str_replace($search,$replace,$array) ;

print_r($array) ;

Array
(
[0] => bbb@***
[1] => bbb@**5
[2] => bbb@**3
)

まとめ

$rohjin = [“菅(75)”,”森山(79)”,”麻生(84)”,”鈴木(71)”] ;// 老人議員

$search = [“菅”,”森山”,”麻生”,”鈴木”] ;// 排除リスト
$replace = [] ;

$gomi = str_replace($search,$replace,$rohjin) ;

$gomi = preg_replace(“/[0-9]+/”,””,$gomi) ;// 数字を削除

$gomi = preg_replace(“/\(|\)/”,””,$gomi) ;// 括弧はエスケープが必要

$gomi[0] = “小泉退次郎(43)” ;// ニューリーダー(笑)

$gomi = array_filter($gomi) ;// 残骸を除去

print_r($gomi) ;

Array
(
[0] => 小泉退次郎(43)
)

unset($gomi[0]) ;// 学力不足につき排除

$gomi[] = “小泉不純郎(82)” ;
$gomi[] = “ケケ中平蔵(73)” ;

print_r($gomi) ;

Array
(
[1] => 小泉不純郎(82)
[2] => ケケ中平蔵(73)
)

ウシナワレタ惨拾年wwwwwwwwww

関連:[PHP] 添字配列や連想配列に要素を追加する方法 [array_push,array_merge]

関連:[PHP] 小数点以下の末尾の0を表示する [sprintf,number_format]

関連:負の整数の符号なし整数表現

関連:[PHP] 秒を時分秒に変換する方法 [gmdateは危険]

関連:[PHP] checkdateが意味不明杉流件 [クヅォ]

関連:[PHP] 指定日から”+1 day”とか [strtotime]

関連:[PHP] date(日付)のフォーマット一覧 [年/月/日/時/分/秒/曜日]

タイトルとURLをコピーしました