【PHP基礎】様々な関数②
様々な関数②
前回に引き続き、数回に渡って、
PHP公式で用意されている便利な関数を紹介していきます!
■substr関数
https://www.php.net/manual/ja/function.substr.php
substr関数は、文字列の一部を返す関数です。
●構文
substr(string, start, [length])
●引数
string | 元の文字列 |
---|---|
start | 正 ⇒ string の 0 から数えて start番目から始まる文字列を返す 負 ⇒ string の後ろから数えて、start番目から始まる文字列を返す |
length | 正 ⇒ start から length文字数分返す 負 ⇒ string の終端から、文字数分が省略される(省略可能) |
●戻り値
データ型 | string |
---|---|
値の説明 | string の一部を返す。失敗した場合は false を返す |
▼補足
バイト数ではなく、文字数で調べる場合には mb_substr関数を使います。
●サンプル
<?php $str = "abcdefghijk"; echo substr($str, 4); // 4文字目以降を切り取って表示 echo "<hr>"; echo substr($str, 4, 3); // 4文字目以降から3文字分切り取って表示(5~7文字目) echo "<hr>"; echo substr($str, -4); // 後ろから4文字分切り取って表示 ?>
●結果
■str_replace関数
https://www.php.net/manual/ja/function.str-replace.php
str_replace関数は、文字列を置換する関数です。
●構文
str_replace ( search, replace, subject, [count] )
●引数
search | 検索する値 |
---|---|
replace | 見つかったsearchを置き換える値 |
subject | 置換対象となる文字列 |
count | 長置換した箇所の個数が格納される。変数を渡す(省略可能) |
●戻り値
データ型 | string |
---|---|
値の説明 | 置換後の文字列を返す |
●サンプル
<?php // 基本の使い方 $a = str_replace("_", "-", "abc_def_ghi"); //「abc_def_ghi」の「_」を「-」に置換 echo $a; echo "<hr>"; // countを使う例 $b = str_replace("_", "", "abc_def_ghi", $count); //「abc_def_ghi」の「_」を「」に変換し、変換した回数を$countに代入 echo $b; echo "<br>\n"; echo $count; echo "<hr>"; // 配列を使う例 $b = str_replace("banana", "melon", ["apple", "banana", "orange"]); // 配列内の要素に「banana」があれば「melon」に変換 print_r($b); ?>
●結果
■explode関数
https://www.php.net/manual/ja/function.explode.php
explode関数は、文字列を指定の文字列で分割した配列を返します
●構文
explode( delimiter, string, [limit] )
●引数
delimiter | 区切り文字列 |
---|---|
string | 入力文字列 |
limit | 配列の要素数を指定します。最後の要素には、string の残りの文字列が全て含まれます。(省略可能) |
●戻り値
データ型 | string |
---|---|
値の説明 | string の内容を delimiter で分割した文字列の配列を返します |
●サンプル
<?php $str = "apple,banana,orange"; // limitナシ $arr1 = explode(",", $str); // 「,」区切りの文字列を配列に変換 print_r($arr1); echo "<hr>"; // limitアリ $arr2 = explode(",", $str, 2); // 「,」区切りの文字列を要素が2つの配列に変換 print_r($arr2); echo "<hr>"; // 区切り文字が無い $arr3 = explode(":", $str); // 「:」が文字列に存在しないため変換されていない print_r($arr3); ?>
●結果
■implode関数
https://www.php.net/manual/ja/function.implode.php
implode関数は、配列の各要素を指定の文字列で連結して、1つの文字列を返します。
●構文
implode( glue, piecies )
●引数
glue | 連結文字列 |
---|---|
piecies | 連結したい文字列の配列 |
●戻り値
データ型 | string |
---|---|
値の説明 | 配列の要素を、glue文字列で連結した文字列を返します。 |
●サンプル
<?php $arr = ["aaa", "bbb", "ccc"]; // ハイフンで連結 $str1 = implode("-", $arr); // 「-」区切りの文字列に変換 echo $str1; echo "<hr>"; // そのまま連結(空文字列で連結) $str2 = implode("", $arr);// 「」区切りの文字列に変換(そのまま結合する) echo $str2; echo "<hr>"; ?>
●結果
■前回記事のドメイン取得について
前回の記事ではドメイン取得の際に@まで取得してしまいましたが、
今回紹介した substr, str_replace を使用すると@を除いたドメインに変換することができます。
以下のサンプルを元に前回のサンプルを修正して、正しいドメインが取得できるか試してみましょう。
$email = "test@email.com"; $domain = strstr($email, '@'); // $domainには「@email.com」が入っている // substrで変換する場合 $domain = substr($domain, 1); // $domainの1文字目以降を取得し上書き echo $domain.'<br>'; // 「email.com」が出力 // str_replaceで変換する場合 $domain = str_replace('@', '', $domain); // $domainの@を空文字に変換し上書き echo $domain.'<br>'; // 「email.com」が出力
次回も引き続き、今回のような便利な関数を紹介しますので
ぜひ参考にしてください。