文字列関数
文字列操作関数
- 文字列を操作する関数
<?php // 文字列に関する関数 $s = "abcdefg"; // strlen // echo strlen($s); // strpos // echo strpos($s, "c"); // substr // echo substr($s, -2, 2); // str_replace echo str_replace("abc", "ABC", $s);
strlen関数
- 文字列の長さ(バイト数)を取得する関数です
文字列の長さ = strlen( 文字列 );
<?php echo '「123mailあいう」の文字列長は、' . strlen ( '123mailあいう' ) . 'です';
printf, sprintf関数
- printf関数は、指定フォーマットで整形した文字列を出力する関数です。
- sprintf関数は、指定フォーマットで整形した文字列を戻り値として返す関数です
printf( 指定フォーマット文字列, フォーマットしたい文字列・数値【, フォーマットしたい文字列・数値・・・】);
フォーマットした文字列 = sprintf( 指定フォーマット文字列, フォーマットしたい文字列・数値【, フォーマットしたい文字列・数値・・・】);
- 数字を出力する場合、「%d」のような変換指定子というものを使用する必要があります
変換指定子 | 説明 |
---|---|
d | 10進数として表現します。桁数を指定する場合は、「%02d」のように指定します。 |
f | 浮動小数点数として表現します。小数点以下の桁数を指定する場合は、「%.4f」のように桁数を指定します。 |
s | 文字列として表現します |
<?php // 小数点以下2桁を表示 printf ( '%.2f<br>', '3.1415926535' ); // %02d と指定すると、1桁の場合、頭に0を付加して表示 printf ( '%02d時%02d分%02d秒<br>', 8, 7, 15 ); // 数値と文字列を同時に指定 $str = sprintf ( '私は、%02d月%02d日に%sへ行きます。', 10, 9, '九州' ); echo $str;
sscanf関数
- sprintf関数とは逆に、指定フォーマットに従い文字列を取得する関数です
配列 = sscanf ( 文字列, 指定フォーマット文字列【, &変数, &変数, &変数】);
<?php // list関数を使用して、各変数に代入 list( $year, $month, $day ) = sscanf( '2009-08-02', '%d-%d-%d' ); echo $year . '<br>'; echo $month . '<br>'; echo $day . '<br>'; // 配列$dateに格納 $date = sscanf( '2008 July 09', '%d %s %d' ); echo $date[0] . '<br>'; echo $date[1] . '<br>'; echo $date[2] . '<br>';
substr関数
- 文字列から指定文字列を抽出する関数です
抽出された文字列 = substr ( 抽出元の文字列, 抽出開始位置, 【抽出する文字数】);
<?php $banban = substr ( 'Homepage', 4, 4); echo $banban;
str_replace関数
- 文字列中の指定文字列を置換する関数です
置換処理された文字列 = str_replace( 置換したい文字列, 置換後の文字列, 置換対象の文字列【, 置換回数(PHP5から対応)】);
<?php // 'C言語'を'java'に置換 //「PHPを学習中。javaも学習したいです。」が出力されます echo str_replace ( 'C言語', 'java', 'PHPを学習中。C言語も学習したいです。' ) . '<br>'; // 配列に文字列を格納 $bef_lang = array ( 'PHP', 'java' ); $aft_lang = array ( 'HTML', 'VB' ); // 配列の要素を置換 //「HTMLもVBも楽しいです。」が出力されます echo str_replace ( $bef_lang, $aft_lang, 'PHPもjavaも楽しいです。' ) . '<br>'; // 引数「置換したい文字列」が配列で、引数「置換後の文字列」が文字列の場合、 // 「置換後の文字列」で「置換したいの文字列」すべてを置換します。 $bef_color = array ( '赤い', '青い' ); $aft_color = '黄色い'; $kekka = str_replace ( $bef_color, $aft_color, '赤い帽子、青いレインコートを持っています。' ); //「黄色い帽子、黄色いレインコートを持っています。」が出力されます echo $kekka . '<br>'; // 置換した回数を出力 str_replace ( 'b', '@', 'abcdbdcsbedbsgbcdbtsb', $count ); // 「7」が出力されます echo $count;
str_repeat関数
- 指定文字列を繰り返したい場合に使用する関数です
繰り返された文字列 = str_repeat( 文字列, 繰り返し回数 );
<?php $ret = str_repeat ( '○', 8 ); echo $ret . '<br>'; echo str_repeat( '★ ★', 3 );
trim関数
- trim関数は、文字列の先頭、末尾にある空白を取り除く関数です
- 全角の空白は変換されませんので、注意してください
- 文字列の先頭のみ空白を取り除きたい場合は「ltrim」、末尾のみ空白を取り除きたい場合は「rtrim」を使用してください
空白を取り除いた文字列 = trim( 文字列【, 空白以外に取り除きたい文字列】);
<?php $space = ' s p a c e '; $tab = ' t a b\t'; echo '変換前(半角スペース):「' . $space . '」<br>'; echo '変換前(タブスペース):「' . $tab . '」<br>'; // 先頭と末尾の半角スペースを除去 $buff = trim ( $space ); echo '変換後(半角スペース):「' . $buff . '」<br>'; // 先頭と末尾のタブスペースを除去 $buff = trim ( $tab ); echo '変換後(タブスペース):「' . $buff . '」<br>'; // 先頭のみ半角スペースを除去 $buff = ltrim ( $space ); echo '変換後(先頭):「' . $buff . '」<br>'; // 先頭と末尾の半角スペースと's p a'を除去 $buff = trim ( $space, 's p a' ); echo '変換後(s p a):「' . $buff . '」<br>';
explode関数
- 文字列を、ある指定文字列で区切り、配列要素として格納する関数です
配列 = explode( 区切り文字列, 文字列【, 区切り回数】);
<?php // 文字列'2013/09/30'を'/'で分解 $date = explode( '/', '2013/09/30' ); echo $date[0] . '<br>'; echo $date[1]. '<br>'; echo $date[2]. '<br>';
implode関数
- explode関数とは逆に、配列を指定文字列で結合する関数です
結合した文字列 = implode( 結合する文字列, 配列 );
<?php // 配列に値を格納 $date = array ( '2013', '09', '30' ); // 配列の要素を'/'で結合 $ret = implode ( '/', $date ); echo $ret . '<br>';
mb_convert_kana関数
- 全角を半角に変換等、英数字・ひらがな・カタカナ・スペースを変換する関数です。漢字は変換対象外です
変換された文字列 = mb_convert_kana( 変換したい文字列【, 変換オプション文字, エンコーディング】);
変換 オプション 文字 |
説明 |
---|---|
a | 「全角英数字」を「半角英数字」に変換します |
A | 「半角英数字」を「全角英数字」に変換します |
c | 「全角カタカナ」を「全角ひらがな」に変換します |
C | 「全角ひらがな」を「全角カタカナ」に変換します |
h | 「全角ひらがな」を「半角カタカナ」に変換します |
H | 「半角カタカナ」を「全角ひらがな」に変換します |
k | 「全角カタカナ」を「半角カタカナ」に変換します |
K | 「半角カタカナ」を「全角カタカナ」に変換します |
n | 「全角数字」を「半角数字」に変換します |
N | 「半角数字」を「全角数字」に変換します |
r | 「全角英字」を「半角英字」に変換します |
R | 「半角英字」を「全角英字」に変換します |
s | 「全角スペース」を「半角スペース」に変換します |
S | 「半角スペース」を「全角スペース」に変換します |
V | "K"、"H"と合わせて使用し、濁点つきの文字を1文字に変換します |
<?php // 全角英数字を半角英数字に変換 echo mb_convert_kana ( '123mail123@aaa.co.jp', 'a', 'UTF8' ) . '<br>'; // 半角カタカナを全角カタカナに変換 echo mb_convert_kana ( 'カタカナ', 'K', 'UTF8' ) . '<br>'; // 半角カタカナを全角カタカナに変換 echo mb_convert_kana ( 'ザジズゼゾパピプペポ', 'KV', 'UTF8' ) . '<br>'; // 半角カタカナを全角ひらがなに変換 echo mb_convert_kana ( 'ザジズゼゾパピプペポ', 'HV', 'UTF8' ) . '<br>';