大化通信

大化物流開発合同会社の社員から技術発信をしていきます

PHPの忘れがちな関数備忘録

こんにちは。大化社員のにっしーです。

今回は、よく忘れがちで何回も検索してしまう
よく使うPHPの関数をまとめてみました。

文字列を数値に変換する

intvalを使用する

文字列を整数値に変換するためにはintval関数を使用します。
例えば、以下のようなコードで使用することができます。

$str = "123";
$int = intval($str);
echo $int;

この場合、文字列の「123」が整数の「123」に変換され、変数$intに代入されます。

floatvalを使用する

文字列をfloatに変換するためにはfloatval関数を使用します。
例えば、以下のようなコードで使用することができます。

$str = "123";
$float = floatval($str);
echo $float;

この場合、文字列の「123」がfloatの「123」に変換され、変数$floatに代入されます。


数値を文字列に変換する

strvalを使用する

数値を文字列に変換するためにはstrval関数を使用します。
例えば、以下のようなコードで使用することができます。

$num = 10;
$str = strval($num);
echo $str;

この場合、数値の「10」が文字列の「10」に変換され、変数$strに代入されます。


文字列(数列)を日付に変換する

strtotimeを使用する

文字列(数列)を日付に変換するためにはstrtotime()関数を使用します。
例えば、以下のようなコードで使用することができます。

$time_value = '201703220134';
echo date('Y年m月d日 H:i',strtotime($time_value));

strtotime() 関数は、英文形式の日時をUNIXタイムスタンプに変換することができます。
変換した値は date にセットして次のように表示します。

2017年03月22日 01:34

年月日をドット区切りにする場合は 'Y年m月d日 H:i' を 'Y.m.d H:i' のように編集してください。



文字列の検索をする

strposを使用する

strposは検索対象の文字列に検索する文字列が何文字目に存在するかを戻り値として返します。
検索した文字列が見つからなかった場合はFALSEを返します。

echo strpos('test@domain.com', '@'); // 4

結果は「4」が出力されます。0から数えられるため、"@"が5文字目にあるということが確認できます。

strstrを使用する

strstrはマッチした文字列より後ろの文字列を戻り値として返します。
検索した文字列が見つからなかった場合はFALSEを返します。

echo strstr('test@domain.com', '@'); // @domain.com

また、"@"より前の部分を表示したい場合は、以下のように第3引数にTRUEを渡します。

echo strstr('test@domain.com', '@', TRUE); // test

 

preg_match()を使用する

preg_match正規表現による検索を行います。
検索対象文字列から正規表現にあてはまる文字列が存在するかチェックします。
戻り値はマッチした文字列がある場合は「1」、ない場合は「0」を返します。

第3引数の配列には、正規表現にマッチした文字列が格納されます。第3引数以降は省略することができます。

if ( preg_match('/[^@]+$/', 'name@example.com', $matches) ) {
   echo $matches[0]; // example.com
}

実行結果は、@より後ろの文字が格納されるため、「example.com」と表示されます。


文字列を分割する

explodeを使用する

explodeは文字列を区切り文字で分割します。
explode関数での文字列分割の指定には、文字列を使います。

$fruits = 'apple orange lemon grape';
$result = explode(' ', $fruits);
var_dump($result);

これを実行すると下記のように表示されます。

array(4) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "orange"
  [2]=>
  string(5) "lemon"
  [3]=>
  string(5) "grape"
}

 

str_splitを使用する

str_splitは文字列を指定した文字数で分割します。
例えば、下記のように使います。

$fruits = 'apple orange banana';
$result = str_split($fruits, 5);
var_dump($result);

これを実行すると下記のように表示されます。

array(4) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(5) " oran"
  [2]=>
  string(5) "ge ba"
  [3]=>
  string(4) "nana"
}

それぞれ、配列に5文字ずつ入っていますが、文字数が足りずに最後は4文字になっています。

str_split関数では、マルチバイト文字(日本語など)は使うことができません。
日本語を指定文字数で分割したい場合には、次項で紹介するmb_str_split関数を使います。

mb_str_splitを使用する

mb_str_splitはstr_split関数のマルチバイト対応バージョンです。
日本語もこちらの関数を使うことで、文字数を指定して分割できます。

$fruits = 'りんご オレンジ バナナ';
$result = mb_str_split($fruits, 3);
var_dump($result);

var_dumpで確認すると、下記のように文字化けせずに分割されていることが確認できました。

array(4) {
  [0]=>
  string(9) "りんご"
  [1]=>
  string(7) " オレ"
  [2]=>
  string(7) "ンジ "
  [3]=>
  string(9) "バナナ"
}

それぞれ、配列に5文字ずつ入っていますが、文字数が足りずに最後は4文字になっています。


今回のPHPの忘れがちな関数備忘録は以上になります。
読んでくださってありがとうございます。
参考になれば幸いです。



【参考・引用元のURL】
PHPで数値から文字列、文字列から数値の変換をしてみる。 | ちょっと便利なてっちーノート
PHP 文字列(数列)を日付に変換する方法 - by Takumi Hirashima
PHPで文字列を検索をする:strpos, strstr, preg_match | UX MILK
PHPで文字列を分割する5つの関数!(explodeなど) | コードライク