文字列関数

文字列操作関数

  • 文字列を操作する関数
<?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>';