PHP内部関数(ビルトイン関数)まとめ

2021/05/21

関数とはいくつかの処理をまとめて入れておくものです。

PHPでは最初から用意されている内部関数(ビルトイン関数)と自分で定義する「ユーザ定義関数」があります。

ここでは「内部関数」についてまとめていきます。

 

INDEX

sprintf関数

引数に指定した値を指定の形式にフォーマットした文字列を取得します。


### 構文
sprintf(文字列のフォーマット, 入力したい文字1, 入力したい文字2, ...);

### 実例①
# 「%s」は文字列、「%d」は数値を代入
$text = sprintf("本日は%d年%d月%d日です。", "2020", "4", "20");
# 「本日は2020年4月20日です。」と出力
echo $text;

### 実例② 0埋め
# 「0001111」と表示
echo sprintf('%07d', 1111);

### 実例③ ページャー
# LIMIT句($startRowから$maxRowsまで)
$sql_limit = sprintf("%s LIMIT %d, %d", $sql, $startRow, $maxRows);

 

substr関数/mb_substr関数

文字列の中から指定した位置から指定した分だけ文字を取り出します。

substr関数

### 構文
# 「文字数」は省略可
substr(対象文字列, 開始位置, 文字数);

### 実例
# 「学習張」と表示
# マルチバイト文字列(ひらがなや漢字)を切り出すことができない
echo substr('laravel学習張', 7);

 

mb_substr関数

### 構文
# 「文字数」「エンコーディング」は省略可
mb_substr(対象文字列, 開始位置, 文字数, エンコーディング);

### 実例
# 「学習張」と表示
# マルチバイト文字列(ひらがなや漢字)を切り出すことができる
echo substr('ララベル学習張', 4, 3, "UTF-8");

 

explode関数

文字列を文字で分割し、配列にして返す。


### 構文
# 第三引数は省略可
# よく似た関数にsplit関数があるが、PHP7では削除されている
explode(区切り文字, 入力文字, 最大要素数);

### 実例①
$strings = "red,blue,yellow,green";
$colors_array = explode("," , $strings);

# 入力文字を区切り文字(この場合カンマ)で分割して配列を返します
# Array( [0]=>red [1]=>blue [2]=>yellow [3]=>green )
print_r($colors_array);

### 実例②
# URLパラメータを配列に格納
$params = explode("&", $_SERVER['QUERY_STRING']);

 

strstr/stristr関数

文字列の中で特定の文字があるかないかを判断したい場合に使います。

・strstr関数 アルファベットの大文字と小文字を区別
・stristr関数 大文字と小文字を区別しない


### 構文
strstr(対象の文字列, 検索したい文字列);

### 実例①
$email = 'info@laraweb.net'

# 出力 laraweb.net 
echo strstr($email, 'l');

### 実例②
// URLに "laraweb.net" が含まれているか調べる
if(strstr($url, 'laraweb.net')){
  echo "laravel学習張のサイトです";
}else{
  echo "laravel学習張のサイトではありません";
}

 

isset関数/empty関数

変数に値がはいっているかどうかをチェックする。

isset関数

isset関数は「変数に値が入っているか」「null でないか」によって true か false を返すものです。

NULLは特別な値で、何も無いことを示します。変数にNULLが入っていても、「何もセットされていない」と判断されます。

$var=''; これは空ですが、isset関数では、空の値がセットされていると判断(true)されます。
変数そのものが定義されていない場合にfalseを返します。

### 構文
isset($変数);

if( isset($変数) ){
  変数がセットされているときの処理
}else{
  変数がセットされていないときの処理
}

### 実例
if isset(!isset($_POST['***']){
  $error = '***が設定されていません'
}

 

empty関数

emptyがtrueになる条件は

・空白の数値
・文字列、配列、数値の0
・文字列の半角の0
・NULLやFALSE
・変数が定義されただけの状態


### 構文
empty($変数);

### 実例
$var=0;
$n=empty($var);

# 出力:1
echo $n;

if($var) isset empty is_null
$var=1 true true false false
$var=""; 空文字 false true true false
$var=0; 整数の0 false true true false
$var=NULL; false false true true
$var; 変数が未定義 false false true true
$var=array(); 配列の初期化 false true true false
$var=array(1) true true false false

 

str_replace関数/preg_replace関数

PHPでの置換処理は str_replace関数 を使用します。

正規表現で検索したい場合は後述する preg_replace関数 を使用します。

str_replace関数

対象のデータの中に指定した文字列が存在したら置換する処理。


### 構文
str_replace(検索文字, 置換文字, 置換対象の文字列);

### 実例
$new_str = str_replace('Laravel', 'Vue.js', 'Laravel学習張');

# 出力:Vue.js学習張
echo $new_str;

 

preg_replace関数

### 構文
preg_replace('/正規表現パターン/', 置換後の文字列, 置換対象の文字列);

### 実例①
$str = 'apple orange melon apple';
$new_str = preg_replace('/(apple)/', 'banana', $str);

# 出力:banana orange melon banana
echo $new_str;

### 実例②
# 改行コード(\nまたは\rまたは\r\n)を改行タグに置き換える
$str = preg_replace('/\r\n|\r|\n/', '<br>',$str);

文字クラス
[abc] a,b,c いずれかの一文字
[^abc] a,b,c 以外の一文字
[A-Z] 大文字のアルファベット一文字
[0-9] 数字一文字
\t タブ
\n 改行
量子定子
* 0回以上の繰り返し
+ 1回以上の繰り返し
? 0回または1回の出現
メタ文字
^ 行頭
$ 行末
| いずれかの文字列
() グループ化
\ 直後のメタ文字をエスケープする

 

ファイルの有無を確認(file_exists関数)

PHPでのファイルの有無の確認は file_exists関数 を使用します。

引数にはファイルシステムパスとファイル名を指定します。

※HTTPアドレスでは機能しないので注意!

ファイルがある場合は true を、その他の場合は false を返します。


# 実例
if (file_exists(public_path() . "/img/1.gif")) {
    return "/img/1.gif";
}

# NG
if (file_exists("www.mysite.com/img/1.gif")) {
    return "/img/1.gif";
}

 

APIへデータ送信(file_get_contents関数)

 

正規表現でマッチ(preg_match関数)

ある文字列に対して、

  • 「XXで始まって○○で終わる」
  • 「○○または△△またはXXを含む」
  • 「□の後に○△が続く」

などの複雑な検索や置換を行うパターンをチェックしたい場合です。


// 構文
// パターン文字列 → 検索するパターンを表現する文字列(正規表現)
// 入力文字列 → 検索する対象の文字列
// 戻り値:マッチに成功した場合は1(true)、失敗は0(false)が返る
論理値 = preg_match(パターン文字列,入力文字列)

// すべて数値であるか調べる
$inputData = 1234;
if(preg_match('/^[0-9]+$/, $inputData')) echo '正しい'; else echo '不正';

// ^ と $ の場合、データ末尾に改行が含まれていてもマッチ(1)を返してしまう
// その場合は \A と \z を使う
if(preg_match('/\A[0-9]+\z/, $inputData')) echo '正しい'; else echo '不正';

【 数字を表す正規表現 】


// 半角数字
[0-9]

// 半角数字(エスケープシーケンス)
\d

// 全角数字
[0-9]

// 半角か全角のいずれか
[0-90-9]

 
また、何か思いついたら追記していこうと思います。

以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-周辺知識