日本語文字列・エンコード

関数一覧

分類関数名External Site意味
情報mb_get_infoExternal Sitembstring の内部設定値を取得する
情報mb_preferred_mime_nameExternal SiteMIME 文字設定を文字列で得る
情報mb_strlenExternal Site文字列の長さを得る
情報mb_strwidthExternal Site半角文字を1、全角を2とした文字列の幅を返す
情報mb_substr_countExternal Site部分文字列の出現回数を数える
取得・追加mb_strcutExternal Site文字列の一部を得る
取得・追加mb_substrExternal Site文字列の一部を得る
変換mb_convert_caseExternal Site文字列に対してケースフォルディング(大/小文字変換)を行う
変換mb_convert_kanaExternal Siteカナを("全角かな"、"半角かな"等に)変換する
変換mb_decode_mimeheaderExternal SiteMIME ヘッダフィールドの文字列をデコードする
変換mb_decode_numericentityExternal SiteHTML 数値エンティティを文字にデコードする
変換mb_encode_mimeheaderExternal SiteMIMEヘッダの文字列をエンコードする
変換mb_encode_numericentityExternal Site文字を HTML 数値エンティティにエンコードする
変換mb_parse_strExternal SiteGET/POST/COOKIE データをパースし、グローバル変数を設定する
変換mb_strimwidthExternal Site指定した幅で文字列を丸める
変換mb_strtolowerExternal Site文字列を小文字にする
変換mb_strtoupperExternal Site文字列を大文字にする
探索mb_striposExternal Site大文字小文字を区別せず、 文字列の中で指定した文字列が最初に現れる位置を探す
探索mb_stristrExternal Site大文字小文字を区別せず、 文字列の中で指定した文字列が最初に現れる位置を探す
探索mb_strposExternal Site文字列の中に指定した文字列が最初に現れる位置を見つける
探索mb_strrchrExternal Site別の文字列の中で、ある文字が最後に現れる場所を見つける
探索mb_strrichrExternal Site大文字小文字を区別せず、 別の文字列の中である文字が最後に現れる場所を探す
探索mb_strriposExternal Site大文字小文字を区別せず、 文字列の中で指定した文字列が最後に現れる位置を探す
探索mb_strrposExternal Site文字列の中に指定した文字列が最後に現れる位置を見つける
探索mb_strstrExternal Site文字列の中で、指定した文字列が最初に現れた位置などの文字列を返す
正規表現mb_ereg_matchExternal Siteマルチバイト文字列が正規表現に一致するか調べる
正規表現mb_ereg_replaceExternal Siteマルチバイト文字列に正規表現による置換を行う
正規表現mb_ereg_search_getposExternal Site次の正規表現検索を開始する位置を取得する
正規表現mb_ereg_search_getregsExternal Siteマルチバイト文字列が正規表現に一致する部分があるか調べる
正規表現mb_ereg_search_initExternal Siteマルチバイト正規表現検索用の文字列と正規表現を設定する
正規表現mb_ereg_search_posExternal Site指定したマルチバイト文字列が正規表現に一致する部分の位置と長さを返す
正規表現mb_ereg_search_regsExternal Site指定したマルチバイト文字列が正規表現に一致する部分を取得する
正規表現mb_ereg_search_setposExternal Site次の正規表現検索を開始する位置を設定する
正規表現mb_ereg_searchExternal Site指定したマルチバイト文字列が正規表現に一致するか調べる
正規表現mb_eregExternal Siteマルチバイト文字列に正規表現マッチを行う
正規表現mb_eregi_replaceExternal Siteマルチバイト文字列に大文字小文字を区別せずに正規表現による置換を行う
正規表現mb_eregiExternal Siteマルチバイト文字列に大文字小文字を区別しない正規表現マッチを行う
正規表現mb_regex_encodingExternal Site現在の正規表現用のエンコーディングを文字列として返す
正規表現mb_regex_set_optionsExternal Siteマルチバイト正規表現関数のデフォルトオプションを取得または設定する
正規表現mb_splitExternal Siteマルチバイト文字列を正規表現により分割する
文字コードmb_check_encodingExternal Site文字列が、指定したエンコーディングで有効なものかどうかを調べる
文字コードmb_convert_encodingExternal Site文字エンコーディングを変換する
文字コードmb_convert_variablesExternal Site変数の文字コードを変換する
文字コードmb_detect_encodingExternal Site文字エンコーディングを検出する
文字コードmb_detect_orderExternal Site文字エンコーディング検出順序を設定あるいは取得する
文字コードmb_http_inputExternal SiteHTTP 入力文字エンコーディングを検出する
文字コードmb_http_outputExternal SiteHTTP 出力文字エンコーディングを設定あるいは取得する
文字コードmb_internal_encodingExternal Site内部文字エンコーディングを設定あるいは取得する
文字コードmb_languageExternal Site現在の言語を設定あるいは取得する
文字コードmb_list_encodingsExternal Siteサポートするすべてのエンコーディングの配列を返す
文字コードmb_output_handlerExternal Site出力バッファ内で文字エンコーディングを変換するコールバック関数
文字コードmb_substitute_characterExternal Site置換文字を設定あるいは取得する
メールmb_send_mailExternal Siteエンコード変換を行ってメールを送信する

エンコーディング文字列一覧

○付きは正規表現でも使えるエンコーディング。

正規表現encoding意味
UCS-421bitのUnicodeを固定長32bit(実効31bit)で表わした文字セット。Unicode範囲外は永久欠番
×UCS-4BEUCS-4ビッグエンディアン
UCS-4LEUCS-4リトルエンディアン
×UCS-221bitのUnicodeを固定長16bitで表わした文字セット。Unicodeの基本多言語面(BMP)に相当。
不足する範囲をサロゲートペア方式で補完した符号化方式がUTF-16
×UCS-2BEUCS-2ビッグエンディアン
×UCS-2LEUCS-2リトルエンディアン
UTF-32Unicodeを固定長32bitで表わす符号化方式。UCS-4の部分集合。21bitのUnicode範囲のみをカバーしている。
UCS-4がUnicode範囲外の拡張をしないことに決まったため実質同等。
UTF-32BEUTF-32ビッグエンディアン
UTF-32LEUTF-32リトルエンディアン
UTF-16UCS-2にサロゲートペア方式を加えてUnicodeを固定長16bitの1〜2ブロックで表わす符号化方式
UTF-16BEUTF-16ビッグエンディアン
UTF-16LEUTF-16リトルエンディアン
×UTF-7UTF-16を+-のシーケンスとBASE64エンコードを用いて7bitで表わす独特な符号化方式
×UTF7-IMAP
UTF-8Unicodeを8〜32bitの可変長を用いて表わす符号化方式。8bit範囲はASCIIコードの互換
ASCIIアスキーコード(7bit)
EUC-JP日本語EUC
SJISシフトJIS
eucJP-winWindows 日本語EUC
SJIS-winWindows シフトJIS
×ISO-2022-JPJISコード
×JISJISコード
ISO-8859-1Latin-1 ASCIIコードを8bitでフランス語などの他国語のラテン文字に拡張したものの初期タイプ
ISO-8859-2Latin-2
ISO-8859-3Latin-3
ISO-8859-4Latin-4
ISO-8859-5
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9Latin-5
ISO-8859-10Latin-6
ISO-8859-13Latin-7
ISO-8859-14Latin-8
ISO-8859-15Latin-9
×byte2be
×byte2le
×byte4be
×byte4le
×BASE64Base64エンコード
×HTML-ENTITIESHTMLエンティティ(Aなど)
×7bit
×8bit
EUC-CN簡体字中国語EUC
×CP936
×HZ
EUC-TW繁体字中国語EUC
×CP950
BIG-5
EUC-KR韓国語EUC
×UHC(CP949)
×ISO-2022-KR
×Windows-1251(CP1251)
×Windows-1252(CP1252)
×CP866(IBM866)
KOI8-R

内部文字エンコーディング

php.ini の mbstring.internal_encoding に設定されているデフォルト文字エンコード。
php.ini に何も設定されていない場合は「ISO-8859-1」が設定されているようだ。
Latin-1 とも呼ばれる8bit版ASCIIコード。
内部文字エンコーディングは以下の3つで使われる。

mbstring モジュールの文字列関数
mb_〜系の関数の文字エンコーディングの初期値。
HTTP 入力文字エンコーディング変換
php.ini の「mbstring.http_input=auto」ならHTTP入力通信時に自動的に変換が行われる。
デフォルトでは「mbstring.http_input=pass」(無効)。
HTTP 出力文字エンコーディング変換
php.ini の「mbstring.http_output=auto」ならHTTP出力通信時に自動的に変換が行われる。
デフォルトでは「mbstring.http_output=pass」(無効)。
//現在の内部文字エンコーディングを取得
echo mb_internal_encoding();

//このスクリプト内で用いる内部文字エンコーディングを設定
echo mb_internal_encoding('UTF-8');

文字コードの検出

//$str のエンコードを検出する。見つからない場合はFALSEを返す
$encoding = mb_detect_encoding ($str);

//第二引数。判定するエンコードと検出順を,区切りで指定
//省略した場合は detect_order() の値が入る
$encoding = mb_detect_encoding ($str,'UTF-8,SJIS,ASCII');

//第三引数。STRICT 厳密な判定を行う。デフォルトでFALSE
$encoding = mb_detect_encoding ($str,detect_order(),TRUE);
//指定したエンコードなら真を返す
//第二引数が省略された場合は mb_internal_encoding() の値が入る
if( mb_check_encoding($str,'UTF-8') ){
	echo "UTF-8",PHP_EOL;
}

文字コードの変換

mb_convert_encoding( 変換させる文字列, 変換後文字コード[, 変換前文字コード] )

//主なエンコード文字列
ASCII,JIS,UTF-8,EUC-JP,SJIS,Unicode

//$to_encoding 変換する文字コード
// ,で区切った左から順に評価される。
//$from_encoding 変換する前の文字コード。デフォルトでauto
//autoは"ASCII,JIS,UTF-8,EUC-JP,SJIS"に置き換えられる。
$str = mb_convert_encoding($str, $to_encode[, $from_encode]);
// シフトJISに変換
mb_convert_encoding($str, 'SJIS')
// 日本語EUCに変換
mb_convert_encoding($str, 'EUC-JP')
// UTF-8に変換
mb_convert_encoding($str, 'UTF-8')
// Unicodeに変換
mb_convert_encoding($str, 'Unicode')

かなの変換 mb_convert_kana

string mb_convert_kana ( string $str [, string $option [, string $encoding ]] )

$option指定した形式に $strを変換して返す。

オプション意味
r全角英字→半角英字ABC→ABC
R半角英字→全角英字ABC→ABC
n全角数字→半角数字012→012
N半角数字→全角数字012→012
a全角英数字と一部の全角記号を「半角」に変換
A半角英数字と一部の半角記号を「全角」に変換
「"'\~」を除くASCIIコードの表示可能文字を変換する。
(U+0022,U+0027,U+005C,U+007E を除く U+0021〜U+007E の範囲)
s全角スペース→半角スペース →
S半角スペース→全角スペース→ 
k全角カタカナ→半角カタカナアイウ→アイウ
K半角カタカナ→全角カタカナアイウ→アイウ
h全角ひらがな→半角カタカナあいう→アイウ
H半角カタカナ→全角ひらがなアイウ→あいう
c全角カタカナ→全角ひらがなアイウ→あいう
C全角ひらがな→全角カタカナあいう→アイウ
V"K", "H" と共に使用し、濁点付きの半角カナを一文字に変換ガ→ガ,ガ→が
  • 変換された文字
    • a A ( " ' \ ~ 除く0x20〜0x7e )
      半角英数字
      !"#$%&'()*+,-./
      0123456789:;<=>?
      @ABCDEFGHIJKLMNO
      PQRSTUVWXYZ[\]^_
      `abcdefghijklmno
      pqrstuvwxyz{|}~
      半角英数字→全角英数字
       "'
      \_
      ~

  • カナ変換。濁音付きオプションVが付いた場合は濁音の結合と分離がされる
    半角カタカナ
    ソ
    ガギグゲゴザジズゼゾダヂヅデド
    バビブベボパピプペポ(ワ)(イ)(エ)ヴ
    半角カタカナ→全角カタカナ
    半角カタカナ→全角ひらがな
    う゛

mb_str_replace

絶対あるべきなのに公式の関数にはない。
既存のマルチバイト関数を組み合わせてそれっぽいのは作れる。

// 文字列のみ対応マルチバイト文字変換
// http://jp.php.net/manual/ja/function.mb-strpos.php のサンプルコードちょっといじっただけ
function _mb_str_replace($search,$replace,$subject,$offset=0,$encoding=’auto’){
	$len_sch = mb_strlen($search,$encoding);
	$len_rep = mb_strlen($replace,$encoding);
	while ( ($offset = mb_strpos($subject,$search,$offset,$encoding)) !== FALSE ){
		$subject = mb_substr($subject,0,$offset,$encoding)
		.$replace
		.mb_substr($subject,$offset + $len_sch,mb_strlen($subject,$encoding),$encoding);
		$offset = $offset + $len_rep;
		if( $offset > mb_strlen($subject,$encoding) )
			break;
	}
	return $subject;
}
  • 標準関数のstr_replaceの仕様
    mixed = str_replace(mixed $search,mixed $replace,mixed $subject,int &$count);
    • $subjectに配列を指定すると配列の要素1つ1つに置き換えを行い置き換え結果を配列で返す
    • $countを指定した場合は$subjectが配列の場合を含む、置き換えを行った総数がセットされる。
    • $searchに文字列、$replaceに文字列を指定すると$searchに当てはまる文字列をすべて$replaceに置き換える
    • $searchに配列、$replaceに文字列を指定すると配列$searchの要素に当てはまる文字列をすべて$replaceに置き換える
    • $searchに文字列、$replaceに配列を指定すると$searchに当てはまる文字列をすべて「Array」に置き換える
    • $searchに配列、$replaceに配列を指定すると配列$searchの要素に対応する配列$replaceの要素に置き換える。
      配列$searchが配列$replaceより短い場合は、余った分の$replaceの要素は無視される。
      配列$searchが配列$replaceより長い場合は、足りない分の$replaceの要素は空文字列に変換される。
    • $subject が多次元配列の場合、配列のリファレンスを持った要素は変換されずそのまま返される。
      //動作例
      $s = range('a','f');
      $r = range('A','C');
      echo str_replace($s,$r,'a,b,c,d,e,f');	//A,B,C,,,
      
      $s = range('a','c');
      $r = range('A','F');
      echo str_replace($s,$r,'a,b,c,d,e,f');	//A,B,C,d,e,f

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規新規下位 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-06-25 (土) 20:48:29 (2361d)