PHP

PHPで特定の文字の最初または最後を置換する方法(str_replace)




この記事を書いた人

まったくの別業界から、プログラミングを約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引数で、範囲を指定します。

相談・質問を募集しています。

記事に関する相談・質問を募集しています。

是非この機会にどうぞ
コメントでの質問も大歓迎です!

ハヤぶろぐのLINE@登録はこちら


メールの方はこちら




-PHP