様々な関数②
前回に引き続き、数回に渡って、
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関数を使います。
●サンプル
1 2 3 4 5 6 7 8 | <?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 |
---|---|
値の説明 | 置換後の文字列を返す |
●サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?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 で分割した文字列の配列を返します |
●サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?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文字列で連結した文字列を返します。 |
●サンプル
1 2 3 4 5 6 7 8 9 10 11 | <?php $arr = [ "aaa" , "bbb" , "ccc" ]; // ハイフンで連結 $str1 = implode( "-" , $arr ); // 「-」区切りの文字列に変換 echo $str1 ; echo "<hr>" ; // そのまま連結(空文字列で連結) $str2 = implode( "" , $arr ); // 「」区切りの文字列に変換(そのまま結合する) echo $str2 ; echo "<hr>" ; ?> |
●結果
■前回記事のドメイン取得について
前回の記事ではドメイン取得の際に@まで取得してしまいましたが、
今回紹介した substr, str_replace を使用すると@を除いたドメインに変換することができます。
以下のサンプルを元に前回のサンプルを修正して、正しいドメインが取得できるか試してみましょう。
1 2 3 4 5 6 7 8 | $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」が出力 |
次回も引き続き、今回のような便利な関数を紹介しますので
ぜひ参考にしてください。