様々な関数②
前回に引き続き、数回に渡って、
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」が出力
次回も引き続き、今回のような便利な関数を紹介しますので
ぜひ参考にしてください。




