CodeLog

文字列から特定部分を取得

PHP側でPOST送信やAjax通信でリクエストされたかを判定する方法を解説します。処理の分岐や不正リクエストの防止に役に立ちます。

バイト単位で取得

$str = substr("12345", 0, 4);

文字列から指定したバイト数の部分を取得するにはsubstr関数を使用します。

substr関数の引数は順に、対象文字列・開始位置・取得するバイト数となります。開始位置は0から始まり、文字数は省略でき省略した場合は開始位置から後ろの文字列が全て取得されます。また、開始位置にマイナスの値を指定すると後ろから何文字目を開始位置にするかを指定できます。

  • PHP
//substrの例
echo substr("abcde", 0, 4); //abcd
echo substr("abcde", 2, 2); //cd
echo substr("abcde", 2); //cde
echo substr("abcde", -1, 1); //e
echo substr("abcde", -3); //cde

substr関数はバイト数単位での取得になるので、全角文字には対応できません。全角文字が含まれる文字列から部分的に取得するには以下の文字数単位で取得する方法をご利用ください。

文字単位で取得

$str = mb_substr("文字列", 0, 2);

文字列から指定した文字数の部分を取得するにはmb_substr関数を使用します。

mb_substr関数の引数は前から順に、対象文字列・開始位置・取得する文字数です。substr関数との違いは開始位置や取得する単位が文字数になるという点です。

  • PHP
//mb_substrの例
echo mb_substr("文字列", 0, 2); //文字
echo mb_substr("文字列", 1); //字列
echo mb_substr("文字列", -1, 1); //列
echo mb_substr("文字列", -3); //文字列
echo mb_substr("abcde", 0, 2); //ab
echo mb_substr("abcde", 3, 2); //de
echo mb_substr("abcde", -3, 2); //cd

mb_substr関数は単位が文字数なので全角文字が含まれる文字でも正確に取得できます。