テキスト処理
マルチバイト文字の文字数をカウントする - mb_strlen()
mb_strlen()を使い、マルチバイト文字の文字数をカウントすることができます。
エンコード正しく指定しないと正しい文字数を取得できません
エンコードは、第二引数に指定します。
関数を定義するには、function を使用します。
定義した関数は、実行することができます。
<?php // 文字列を設定 $aisatsu = "こんにちは"; // 文字数を出力する echo mb_strlen($aisatsu, "utf-8"); ?> ◆実行結果 5
文字列を出力する - echo() print()
echo()関数やprint()関数を使用すると文字列を出力することができます。
両関数とも()で囲わなくても、囲ってもどちらでも構いません。
<?php echo 'おはようございます<br>'; echo ('こんにちは<br>'); print 'こんばんは<br>'; print('おやすみなさい<br>'); ?> ◆実行結果 おはようございます こんにちは こんばんは おやすみなさい
文字列の先頭を大文字にする - ucfirst()関数
ucfirst()関数を使い、文字列の先頭を大文字にすることができます。
<?php $text = "hoge"; echo ucfirst($text); ?> ◆実行結果 Hoge
文字列の先頭を小文字にする - lcfirst()関数
lcfirst()関数を使い、文字列の先頭を小文字にすることができます。
<?php $text = "Hoge"; echo lcfirst($text); ?> ◆実行結果 hoge
PHP5.3.0 以降で使用可能です。
文字を丸める(指定した文字数に短縮する)- mb_strimwidth()関数
mb_strimwidth()関数を使用すると文字指定した文字数に短縮することができます。
第1引数に処理対象の文字列を指定します。
第2引数に文字数のカウントカウントする開始点 (最初の文字は 0) を指定します。
第3引数に丸める幅(文字数)をバイト数で指定します。
第4引数に文字を丸める際に変換する文字を指定します。
戻り値には、丸められた文字列を出力します。
ちなみにmb_strimwidth()関数
<?php echo mb_strimwidth("こんにちは、今日は祝日です。", 0, 9, "..."); ?> ◆実行結果 こん...
文字列が英数字かどうか確認する - ctype_alnum()関数
ctype_alnum()関数を使用すると文字列が英数字かどうか確認することができます。
戻り値は、英数字だった場合は TRUE 、そうでない場合に FALSE を返します。
<?php $text = 'hoge'; $result = ctype_alnum($text); if ($result === true) { echo '英数字です。'; } else { echo '英数字ではありません。'; } ?> ◆実行結果 英数字です。
特定の文字を置換する - str_replace()関数
str_replace()関数を使用して特定の文字を置換することができます。
第一引数に置換対象の文字、第二引数に置換後の文字、第三引数に処理対象の文字列を指定します。
戻り値には、置換処理後の文字列が出力されます。
<?php $tel = '050-0123-456*'; // ハイフンを取り除く $tel = str_replace("-","",$zip); echo $tel; ?>
置換対象の文字列を複数指定する事も可能です。
置換対象の文字列を複数指定することも可能です。
この場合、第一引数に配列で複数の文字を指定します。
<?php $str = 'パソコンを購入。スマートフォンを購入。'; $search = array('パソコンを購入。', 'スマートフォンを購入。'); echo str_replace($search, '置換しました。', $str); ?> ◆実行結果 置換しました。置換しました。
置換後の文字列を複数指定する事も可能です。
この場合、第一引数と第二引数に配列を指定します。それぞれ配列のキーに対応した文字列に変換されます。
<?php $str = 'パソコンを購入。スマートフォンを購入。'; $search = array('パソコン', 'スマートフォン'); $after = array('テレビ', '洗濯機'); echo str_replace($search, $after, $str); ?> ◆実行結果 テレビを購入。洗濯機を購入。
文字列を一文字ずつ分割する - str_split()関数
str_split()関数を使用すると文字列を一文字ずつ分割することができます。
分割された文字は配列に格納されます。
<?php $str = 'abcd'; $chars = str_split($str); var_dump($chars); ?> ◆実行結果 array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" }
文字列を置換する(大文字と小文字を区別しない)- str_ireplace()関数
str_ireplace()関数を使用すると、大文字と小文字を区別しない文字列の置換をすることができます。
第一引数には、置換前の文字列を指定します。
第二引数には、置換後の文字列を指定します。
第三引数には、処理対象の文字列を指定します。
<?php
$text = 'OK ok';
echo str_ireplace("ok","NG",$text);
?>
◆実行結果
NG NG
文字列の最初と最後の半角空スペースを削除 - trim()関数
trim()関数を使用すると、文字列の最初と最後の指定した文字を削除することができます。
第一引数には、削除する文字列を指定します。
第二引数には、処理対象の文字列を指定します。
以下の例では、半角スペースを削除しています。
<?php $text = " タイトル "; echo trim(" ", $text); ?> ◆実行結果 タイトル
文字を指定して出現回数をカウントする - substr_count()関数,mb_substr_count()関数
substr_count()関数を使用すると文字を指定して出現回数をカウントすることができます。
なお、この関数はマルチバイトには対応しておらず、マルチバイトの文字列の場合は、mb_substr_count()関数を使用します。
両関数とも使い方は同じです。
第一引数に処理対象の文字列を渡し、第二引数にカウント対象の文字を指定します。
■substr_count()関数
<?php $text = 'hello'; echo substr_count($text,'l'); ?> ◆実行結果 2
■mb_substr_count()関数
<?php $text = 'こんにちは'; echo mb_substr_count($text, "こ"); ?> ◆実行結果 1
最初のタブやスペースを取り除く - ltrim関数
ltrim関数を使用すると最初のタブ、スペース、改行を取り除くことができます。
なお、全角スペースは削除できませんので気をつけましょう。
<?php $test = " おはよう!"; $test = ltrim($test); var_dump($test); ?> ◆実行結果 string(15) "おはよう!"
最後のタブやスペースを取り除く - rtrim関数
rtrim関数を使用すると最後のタブ、スペース、改行を取り除くことができます。
なお、全角スペースは削除できませんので気をつけましょう♪
<?php $test = "おはよう! "; $test = rtrim($test); var_dump($test); ?> ◆実行結果 string(15) "おはよう!"
文字列を大文字にする - strtoupper関数
strtoupper関数を使用すると文字列を大文字にすることができます。
<?php $text = "hello!!"; echo strtoupper($text); ?> ◆実行結果 HELLO!!
文字列を小文字にする - strtolower関数
strtolower関数を使用すると文字列を小文字にすることができます。
<?php $text = "HELLO!!"; echo strtolower($text); ?> ◆実行結果 hello!!
文字列の文字コードを調べる - mb_detect_encoding()関数
mb_detect_encoding()関数を使用すると、文字列の文字コードを調べることができます。
<?php $str = 'こんにちは'; echo mb_detect_encoding($str); ?> ◆実行結果 UTF-8
文字列の文字コードを変更する - mb_convert_encoding()関数
mb_convert_encoding()関数を使用すると、文字列の文字コードを変更することができます。
第二引数には、変換後の文字コードを指定します。
第三引数には、変換前の文字コードを指定できます。
第三引数には、autoを指定し文字コードを自動検出することもできます。
<?php $str = 'こんにちは'; $str = mb_convert_encoding($str, "EUC-JP", "UTF-8"); ?>
ひらがなをカタカナに変換する - mb_convert_kana()関数
mb_convert_kana()関数を使用すると、ひらがなをカタカナに変換することができます。
mb_convert_kana()関数は、第二引数にオプションを指定し、変換方法を指定します。
<?php $str = "こんにちは"; // 最初にテキストの文字コードを指定します。 mb_internal_encoding("UTF-8"); // ひらがなを全角カタカナに変換 $str = mb_convert_kana($str, "KVC"); var_dump($str); ?> ◆実行結果 string(15) "コンニチハ"
なお、上記ではオプションKVCを指定していました。
この他に指定できるオプションがあります。
オプションを以下に記載します。
オプション 意味 r 「全角」英字を「半角」に変換します。 R 「半角」英字を「全角」に変換します。 n 「全角」数字を「半角」に変換します。 N 「半角」数字を「全角」に変換します。 a 「全角」英数字を「半角」に変換します。 A 「半角」英数字を「全角」に変換します ("a", "A" オプションに含まれる文字は、U+0022, U+0027, U+005C, U+007Eを除く U+0021 - U+007E の範囲です)。 s 「全角」スペースを「半角」に変換します(U+3000 -> U+0020)。 S 「半角」スペースを「全角」に変換します(U+0020 -> U+3000)。 k 「全角カタカナ」を「半角カタカナ」に変換します。 K 「半角カタカナ」を「全角カタカナ」に変換します。 h 「全角ひらがな」を「半角カタカナ」に変換します。 H 「半角カタカナ」を「全角ひらがな」に変換します。 c 「全角カタカナ」を「全角ひらがな」に変換します。 C 「全角ひらがな」を「全角カタカナ」に変換します。 V 濁点付きの文字を一文字に変換します。"K", "H" と共に使用します。
文字列を固定長にして指定した文字で埋める - str_pad()関数
str_pad()関数を使用すると文字列を固定長にして不足文字を指定した文字で埋めることができます。
第二引数に文字列の長さを指定し、第三引数に埋める際に使用する文字列をしてし、第四引数に埋める場所を定数で指定します。
<?php $input = "TEST"; // 右を埋める echo str_pad($input, 20, "_", STR_PAD_RIGHT); echo PHP_EOL; // 両方を埋める echo str_pad($input, 20, "_", STR_PAD_BOTH); echo PHP_EOL; // 左を埋める echo str_pad($input, 20, "_", STR_PAD_LEFT); echo PHP_EOL; ?> ◆実行結果 TEST________________ ________TEST________ ________________TEST
文字列を指定数で分割して文字列を挿入する - chunk_split()関数
chunk_split()関数で文字列を指定数で分割して文字列を挿入することができます。
第一引数に処理対象の文字列を指定します。
第二引数で分割する文字数を指定します。
第三引数に分割の際に挿入する文字列を指定します。
<?php $string = "123456789012345678901234567890"; echo chunk_split($string, 10, "<br />"); ?> ◆実行結果 1234567890<br />1234567890<br />1234567890<br />
文字列に関する情報を出力する - count_chars()関数
count_chars()関数を使用すると、文字列に関する情報を出力することができます。
第二引数には、モードを指定します。
◆モードに指定可能なもの 0 - 各バイトの値をキー、各バイトの出現回数を値とする配列。 1 - 0と同じですが、各バイト値の出現回数がゼロより大きいものの一覧となります。 2 - 0と同じですが、各バイト値の出現回数がゼロであるものの一覧となります。 3 - すべての一意な文字を含む文字列を返します。 4 - 使用されていないすべての文字を含む文字列を返します。
使用例を以下に記載します。
<?php $text = "How are you doing?"; foreach (count_chars($text, 1) as $i => $val) { echo "There were $val instance(s) of \"" , chr($i) , "\" in the string.<br>"; } ?> ◆実行結果 There were 3 instance(s) of " " in the string. There were 1 instance(s) of "?" in the string. There were 1 instance(s) of "H" in the string. There were 1 instance(s) of "a" in the string. There were 1 instance(s) of "d" in the string. There were 1 instance(s) of "e" in the string. There were 1 instance(s) of "g" in the string. There were 1 instance(s) of "i" in the string. There were 1 instance(s) of "n" in the string. There were 3 instance(s) of "o" in the string. There were 1 instance(s) of "r" in the string. There were 1 instance(s) of "u" in the string. There were 1 instance(s) of "w" in the string. There were 1 instance(s) of "y" in the string.
作成日:2015年11月23日
更新日:2019年05月04日