目次
この記事を書いた人
まったくの別業界から、プログラミングを約1年の独学後に転職。
現在は、Web開発のみならず、ゲーム開発、AI開発、3D制作など幅広くお仕事をさせていただいております。
コード
1.一致した文字の中で、"最初"の文字だけ置換
function str_replace_first($from, $to, $content)
{
$from = '/' . preg_quote($from, '/') . '/';
// 一つだけ置換
return preg_replace($from, $to, $content, 1);
}
//置換前
$str = "私は東京生まれ、東京育ちです。";
//置換処理
$str = str_replace_first("東京", "岐阜", $str);
echo $str;
置換前:私は東京生まれ、東京育ちです。
↓
置換後:私は岐阜生まれ、東京育ちです。
2.一致した文字の中で、"最後"の文字だけ置換
function str_replace_last($from, $to, $content)
{
// $fromが最後に登場する位置を取得
$pos = strrpos($content, $from);
if($pos !== false)
{
// 最後の一致を置換
$content = substr_replace($content, $to, $pos, strlen($from));
}
return $content;
}
//置換前
$str = "私は東京生まれ、東京育ちです。";
//置換処理
$str = str_replace_last("東京", "岐阜", $str);
置換前:私は東京生まれ、東京育ちです。
↓
置換後:私は東京生まれ、岐阜育ちです。
解説
"最初"の文字だけ置換
【6行目】
preg_replace('/置換対象の文字列/', '置換後の文字列', '置換対象の文字列が含まれている部分');
preg_replace
関数は、文字列を置換するために使われます。
似たようなものに、str_replace
関数がありますが、違いは正規表現が使えるかにあります。
正規表現が使えるpreg_replace
関数は、より複雑な置換を実現できます。
第4引数に入る数字は、int型の指定で、置換回数となります。これを2にすると、「東京」が2つとも「岐阜」に置換されます。
【3行目】
$from = '/' . preg_quote($from, '/') . '/';
前述のpreg_replace
関数の第一引数は、/◉◉/という形での指定が必要です。preg_quote
を用いて、/東京/という形に事前に処理がされています。preg_quote
は、str
を引数とし、正規表現構文の特殊文字の前にバックスラッシュを挿入します。
"最後"の文字だけ置換
【4行目】
strrpos
関数で、文字列中に、ある部分文字列が最後に現れる場所を探します。
文字列があれば、その位置を返し、無い場合は、Falseで返します。
【9行目】
substr_replace( 置換対象の文字列, 置換する文字列, 開始位置 [, 範囲] )
第3引数に、先ほどstrrpos
関数で取得した値(=開始位置)を指定します。
第4引数で、範囲を指定します。