とりあえずの備忘録

主にパソコンやインターネットに関するメモ

PHP 文字列を置換する

文字列をstr_replace関数とstrtr関数を使って置換する

<?php
$moji = 'Hello! JUGEM Blog';

//str_replace関数で置換
$moji2 = str_replace('Hello', 'Welcome', $moji);

//strtr関数で置換
$moji3 = strtr($moji, 'Hello', 'Welcome');

//出力
echo 'str_replace -> ' . $moji2 . '<br />';
echo 'strtr -> ' . $moji3 . '<br />';
?>

「出力結果」

str_replace -> Welcome! JUGEM Blog
strtr -> Welcome! JUGEM Bcog

str_replace ( [検索文字列], [置換文字列], [対象文字列] ) と指定する。
strtr ( [対象文字列], [検索文字列], [置換文字列] ) と指定する。

文字列を配列を使ってまとめて置換する

<?php
$moji = 'Linux, Apache, MySQL, PHP';

//str_replace関数で使う配列
$search = array('Linux', 'Apache', 'MySQL', 'PHP');
$replace = array('Windows', 'IIS', 'SQL Server', 'ASP');

//strtr関数で使う連想配列
$replace_array = array(
 'Linux' => 'Windows',
 'Apache' => 'IIS',
 'PHP' => 'ASP',
 'MySQL' => 'SQL Server'

);

//置換する
$moji2 = str_replace($search, $replace, $moji);
$moji3 = strtr($moji, $replace_array);

//出力
echo 'str_replace -> ' . $moji2 . '<br />';
echo 'strtr -> ' . $moji3 . '<br />';
?>

「出力結果」

str_replace -> Windows, IIS, SQL Server, ASP
strtr -> Windows, IIS, SQL Server, ASP

文字列を配列を使ってまとめて置換する(置換された文字を再度検索対象にする)

<?php
$moji = 'Linux, Apache, MySQL, PHP';

//"SQL Server"に置換された後、それをさらに"PostgreSQL"に置換しようとする

//str_replace関数で使う配列
$search = array('Linux', 'Apache', 'MySQL', 'PHP', 'SQL Server');
$replace = array('Windows', 'IIS', 'SQL Server', 'ASP', 'PostgreSQL');

//strtr関数で使う連想配列
$replace_array = array(
 'Linux' => 'Windows',
 'Apache' => 'IIS',
 'PHP' => 'ASP',
 'MySQL' => 'SQL Server',
 'SQL Server' => 'PostgreSQL'
);

//置換する
$moji2 = str_replace($search, $replace, $moji);
$moji3 = strtr($moji, $replace_array);

//出力
echo 'str_replace -> ' . $moji2 . '<br />';
echo 'strtr -> ' . $moji3 . '<br />';
?>

「出力結果」

str_replace -> Windows, IIS, PostgreSQL, ASP
strtr -> Windows, IIS, SQL Server, ASP

str_replace関数は置換後の文字も検索対象となり置換されるが、strtr関数は置換後の文字は検索対象にならない。