PHPで指定した位置に文字列を挿入する方法を解説!
PHPで文字列の指定した位置へ、任意の文字列を挿入する方法いついてサンプルコードつきで解説します。
PHPで指定した位置に文字列を挿入したい
PHPで指定した位置に文字列を挿入する方法について解説します。例えば
- 郵便番号の3桁目にハイフンを入れたい
- カード番号を4桁区切りにハイフンを入れたい
PHPで指定した位置に文字列を挿入する方法
PHPで指定した位置に文字列を挿入する方法を、ケース別にご紹介します。
PHPでバイト数を指定して文字列を挿入する
PHPでバイト数を指定して文字列を挿入するには、検索文字列に一致したすべての文字列を置換できるsubstr_replace
関数を用います。
ここでは、郵便番号を例に解説していきます。
substr_replace
関数で7桁の数値の、先頭から3バイト目へハイフン(-
)を追加します。
先頭から3文字目の後ろへハイフンを追加
substr_replace('1638001', '-', 3, 0);
実行結果を書き出すと、下記の様になります。郵便番号のフォーマットになりました。
substr_replace
関数はバイト数を指定する為、全角文字へ利用すると文字化けや正しく文字の挿入ができない場合がありますので注意してください。
PHPで全角文字列へ文字列を挿入する
技巧的な検索を行って文字列を挿入する場所を特定したい場合や、日本語などの全角文字列の中へ挿入したい場合はpreg_replace
関数を使います。
郵便番号が全角数値だった場合を例に解説していきます。
先頭から3文字目の後ろへハイフンを追加
preg_replace("/^.{0,3}+\K/us", '-', '1638001');
全角7文字の文字列へpreg_replace
関数で、先頭から3文字目へ全角ハイフン(-)を追加します。
実行結果を書き出すと、下記の様になります。全角の郵便番号フォーマットになりました。
PHPで指定文字数毎に文字列を挿入する
カード番号や顧客コードなど、決まった文字数で文字列を区切りたい場面があるかと思います。ここではカード番号を例に解説していきたいと思います。
4桁毎にハイフンを追加する
wordwrap('4012888888881881', 4, '-', true);
上記コードではwordwrap
関数を使って、4バイト毎にハイフン(-
)を追加しています。
実行結果を確認してみましょう。
4桁区切りにハイフンで(-
)区切られていますね。
wordwrap
関数もバイト数を指定する為、全角文字へ利用すると文字化けや正しく文字の挿入ができない場合がありますので注意してください。
まとめ
PHPで指定した位置に文字列を挿入する方法をご紹介しましたが、下記ではPHPで文字列の中にスペースを挿入する方法を解説しています。似通ったサンプルを、違った関数で解説しているものもあるので、ぜひ一緒に確認してみましょう。