[PHP] 文字列の前後から指定した数の文字を削除する

公開
更新日

スポンサーリンク

PHPで文字列の前後から指定した数の文字を削除する方法のメモ。

2バイト文字が混じっていない場合はsubstr()strlen()を使う。全角を含む場合はmb_substr()mb_strlen()を使う。

文字列の最後から1文字をカットしたい場合。

$str = "abcdefghijklmnopqrstuvwxyz";//文字列
$cut = 1;//カットしたい文字数
$replace = substr( $str , 0 , strlen($str)-$cut );
echo $replace;//abcdefghijklmnopqrstuvwxy

文字列の始まりの1文字をカットしたい場合。

$str = "abcdefghijklmnopqrstuvwxyz";//文字列
$cut = 1;//カットしたい文字数
$replace = substr( $str , $cut , strlen($str)-$cut );
echo $replace;//bcdefghijklmnopqrstuvwxyz

substr( $string , $start , $length )は第1引数に与えた文字列から、第2引数で指定した位置から第3引数で指定した長さの文字列を返す。strlen( $string )は与えられた文字列の長さを返す。

なので、substr()strlen()を与え、カットしたい文字数を文字長から引く。

substr()strlen()は2バイト文字に対応していないので、全角が混じっている場合はmb_substr()mb_strlen()を使う。

基本的な使い方は同じ。

$str = "あめんぼあかいなあいうえお";//文字列
$cut = 1;//カットしたい文字数
$replace = mb_substr( $str , 0 , mb_strlen($str)-$cut );
echo $replace;//あめんぼあかいなあいうえ

mb_substr()mb_strlen()は文字エンコーディングをそれぞれ第4引数、第2引数に取る。指定していない場合は内部文字エンコーディングに従う。文字化けの問題が生じた場合は文字エンコーディングを指定する。

文字エンコーディングを指定する場合のコードは以下。

$str = "あめんぼあかいなあいうえお";//文字列
$cut = 1;//カットしたい文字数
$replace = mb_substr( $str , 0 , mb_strlen($str,'utf-8')-$cut , 'utf-8' );
echo $replace;//あめんぼあかいなあいうえ

スポンサーリンク


Comment