PHPの関数と正規表現の基本

目次

関数

デフォルト引数値

function 関数名(引数 = デフォルト値) { ... }
function job($jobTitle = "会社員") {
  return $jobTitle;
}

echo job("公務員"); // 結果:公務員
echo job();        // 結果:会社員

必須引数とデフォルト引数を混在させる場合は、デフォルト引数を必須引数の右側に書く必要があります。

// NG
function 関数名(引数 = デフォルト値, 必須引数) { ... }
// OK
function 関数名(必須引数, 引数 = デフォルト値) { ... }

参照渡し

引数の変数の前に&をつけると引数の参照渡しになります。

// 値渡しの関数:引数のコピーを受け取り、元の変数は変更されない
function changeJob($job) {
  $job = "会社員";
}

// 参照渡しの関数:引数を参照で受け取り、元の変数を変更する
function changeJobRef(&$job) {
  $job = "自営業";
}

$my_job = "公務員";

changeJob($my_job);
echo $my_job;  // 結果:公務員

changeJobRef($my_job);
echo $my_job;  // 結果:自営業

値渡しは、関数内で変数を変更しても元の値は変わりません
一方、参照渡しは、関数の中から直接元の変数を書き換えるのと同じ意味になります。

文字列に関する関数

mb_strlen:文字列の長さを求める

mb_strlen関数で文字列の長さを求めます。

mb_strlen(文字列)
$str = "あいうえお";
echo mb_strlen($str); // 結果:5

mb_substr:文字列を取り出す

mb_substr関数は、指定された範囲の文字列を取り出します。

mb_substr(文字列, 開始位置, 長さ)
$str = "あいうえお";
echo mb_substr($str , 2, 2); // 結果:うえ

mb_strpos:部分文字列の位置を検索

mb_strpos関数は、指定した文字列が何文字目に含まれるかを探し出します。

mb_strpos(文字列, 探し出したい文字列)
$str = "あいうえお";
$srch = "うえ"
echo mb_strpos($str, $srch); // 結果:2

str_replace:文字列の置き換え

str_replace関数は、文字列の置き換えを行います。

str_replace("置換したい文字", "置換後の文字", "対象の文字列");
$str = "あいうえお";
echo str_replace("いうえお", "りがとう", $str); // 結果:ありがとう

正規表現

メタ文字意味
.任意の1文字
^〜ではじまる([ ]内で使用すると除外を意味する
$〜で終わる
文字の範囲指定
|又は
*直前の文字を0回以上繰り返す
+直前の文字を1回以上繰り返す
?直前の文字がない、またはある
(グループ化の開始
)グループ化の終了
{繰り返す回数指定の開始
}繰り返す回数指定の終了
[パターン定義の開始
]パターン定義の終了

正規表現の例

[abc]

a、b、cいずれかの1文字を表します。
[ ]の中に複数の文字列を記述すると、そのいずれかに該当する正規表現となります。

  • 該当する例:a、b、c
  • 該当しない例:aa、d、bc
[^abc]

a、b、c以外の1文字を表します。
^は通常「〜ではじまる」を意味しますが、[ ]内で使用すると除外を意味します。

  • 該当する例:d、e
  • 該当しない例:dd、a、b、c
[A-Z]

大文字のアルファベット1文字。
AからZまでの範囲の全てを表します。

  • 該当する例:A、B、C
  • 該当しない例:a、BB、AB
[a-zA-Z0-9]

アルファベットか数字の1文字を表します。

該当する例:A、a、9
該当しない例:AA、1B、10

^東京.*

「東京」ではじまる文字列を表します。
^は文字列の先頭、.は任意の一文字、*はそれが0文字以上続くことを表します。

該当する例:東京都、東京タワー、東京大学
該当しない例:埼玉県、西東京市

[0-9]+cm

「◯◯cm」という文字列を表します。
◯◯は0以上の整数が入り、[0-9]+が1文字以上の数値を表します。

該当する例:1cm、10cm、0cm
該当しない例:-1cm、cm、100

^[0-9]{3}-[0-9]{4}$

郵便番号の正規表現です。

該当する例:101-0051、171-0022
該当しない例:1710022、03-6837-4600

preg_match関数:正規表現と一致するかどうか

preg_match(パターン, 対象の文字列)

preg_match関数の正規表現のパターンは[/[A-Z]/]のようにスラッシュ/で囲みます。

対象の文字列が正規表現にマッチした場合に1を返し、 マッチしなかった場合は0を返します。
失敗した場合にfalseを返します。

function match_zip($zip) {
  if (preg_match("/^[0-9]{3}-[0-9]{4}$/", $zip) === 1) {
    echo "正しい郵便番号形式です。\n";
  } else {
    echo "無効な郵便番号形式です。\n";
  }
}

match_zip("101-0051"); // 正しい郵便番号形式です。
match_zip("1710022");  // 無効な郵便番号形式です。

PHPの基礎:まとめ

続きはこちら。

おすすめWEBスクール

WEB制作やWEBデザインを学びたいなら、SNSでも話題の「デイトラ」がおすすめ!
どのコースも10万円前後と業界最安値で、副業や転職に向けて十分なスキルを身につけることができます。

役に立ったら他の方にシェア

お気軽にコメントどうぞ

コメントする

目次