マルチバイト文字列関数
- 関数一覧
-
mb_convert_encoding() /
mb_convert_variables() /
mb_strimwidth() /
mb_strlen() /
mb_strpos() /
mb_strrpos() /
mb_strwidth() /
mb_substr() /
mb_substr_count()
- 機能一覧
-
文字エンコーディングを変換する /
指定した幅に文字列を丸める/文字列の幅を得る /
文字列の長さを得る /
文字列A内の文字列Bの有無と位置を調べる /
文字列の一部を得る /
部分文字列の出現回数を得る
mb_convert_encoding()
関数
- string mb_convert_encoding(string 文字列, string 変換後エンコード[, mixed 変換前エンコード])
- 「文字列」の文字コードを「変換前エンコード」から「変換後エンコード」に変換する関数です。
- 「変換前エンコード」には、配列または“「,(カンマ)」区切りの文字列”が指定出来ます。配列を指定した場合は若い番号の要素(エンコード)から順に、“「,(カンマ)」区切りの文字列”を指定した場合は左側のエンコードから順に自動検出を行います。省略された場合のデフォルト値は、内部文字エンコーディングです。
- 「変換前エンコード」に「"auto"」を指定すると、「"ASCII, JIS, UTF-8, EUC-JP, SJIS"」に展開されます。
以下にサンプル。
<?php
$str = "ほでなすPHP";
$str = mb_convert_encoding($str, "SJIS");
$str = mb_convert_encoding($str, "EUC-JP", "SJIS");
$str = mb_convert_encoding($str, "SJIS", "EUC-JP, UTF-8");
$str = mb_convert_encoding($str, "SJIS", "auto");
?>
PageTop
mb_convert_variables()
関数
- string mb_convert_variables(string 変換後エンコード, mixed 変換前エンコード, mixed 変数[, 変数2...])
- 「変数[, 変数2...]」の文字コードを「変換前エンコード」から「変換後エンコード」に変換する関数です。
- 第3引数以降の「変数N」は変換する変数へのリファレンスで、文字列、配列、オブジェクトを指定可能です。また、全て同じエンコード(「変換前エンコード」)であると仮定されます。
- 変換に成功すると「変換前エンコード」を返し、失敗すると「FALSE」を返します。
以下にサンプル。
<?php
$str1 = "ほでなすPHP";
$str2 = "プロジェクトP";
$encode = mb_convert_variables("SJIS", "EUC-JP", $str1, $str2);
?>
PageTop
mb_strimwidth()
関数
- string mb_strimwidth(string 文字列, int 開始位置, int 幅, string 埋め合わせ文字列[, string エンコード])
- 「文字列」を「開始位置」からの「幅」に丸め、後尾に「埋め合わせ文字列」を追加した文字列を返す関数です。なお、「幅」は「埋め合わせ文字列」を含めた値です。
- 「エンコード」が省略された場合のデフォルト値は内部文字エンコーディングです。
- 注:「幅」は字数ではなく、バイト数です。文字コードが異なれば「幅」は変わります。PHPファイルのエンコードを変えると違った結果になります。
以下にサンプル。
<?php
$str = "寝ても覚めてもほでなすPHP";
echo mb_strimwidth($str, 0, 12, "...");
/*出力結果
寝ても...
*/
?>
PageTop
mb_strwidth()
関数
- int mb_strwidth(string 文字列[, string エンコード])
- 「文字列」の“幅”を返す関数です。
- 「エンコード」が省略された場合のデフォルト値は内部文字エンコーディングです。
- 注:“幅”は字数ではなく、バイト数です。文字コードが異なれば“幅”は変わります。PHPファイルのエンコードを変えると違った結果になります。
以下にサンプル。
<?php
$str = "寝ても覚めてもほでなすPHP";
echo mb_strwidth($str);
/*出力結果
25
*/
?>
PageTop
mb_strlen()
関数
- int mb_strlen(string 文字列[, string エンコード])
- 「文字列」の長さ(字数)を返します。
- 「エンコード」が省略された場合のデフォルト値は内部文字エンコーディングです。
- この関数は「
strlen()
」関数のマルチバイト文字対応版です。
以下にサンプル。
<?php
$str = "寝ても覚めてもほでなすPHP";
echo mb_strlen($str);
/*出力結果
14
*/
?>
PageTop
mb_strpos()
関数
- int mb_strpos(string 文字列, string 部分文字列[, int 開始位置[, string エンコード]])
- 「文字列」内で、「部分文字列」が最初に現れる位置を返す関数です。
- 「部分文字列」が存在しない場合は「FALSE」を返します。
- 「開始位置」を指定すると、それ以降に存在するかを調べます。その場合でも、返される値は「文字列」の先頭からの絶対位置になります。
- 「開始位置」に、指定した「文字列」の字数を超える値を指定するとエラー(「
E_WARNING
」)を発します。
- 「部分文字列」が存在するか否かを調べたい場合、この関数が返す値が「0」の場合もあるため、「
===
演算子」を使って「if(mb_strpos($str, $part) === FALSE){処理}
」のように書くか、「is_numeric()
」関数を使用して「if(is_numeric(mb_strpos($str, $part))){処理}
」と書く必要があります。
- 「エンコード」が省略された場合のデフォルト値は内部文字エンコーディングです。
- この関数は「
strpos()
」関数のマルチバイト文字対応版です。
以下にサンプル。
<?php
$str = "寝ても覚めてもほでなすPHP";
$part = "も";
echo mb_strpos($str, $part), "<br />";
echo mb_strpos($str, $part, 3), "<br />";
if( mb_strpos($str, "あ") === false ){
echo "not exists<br />";
}
if( is_numeric( mb_strpos($str, "寝") ) ){
echo "exists";
}
/*出力結果
2
6
not exists
exists
*/
?>
PageTop
mb_strrpos()
関数
- int mb_strrpos(string 文字列, char 部分文字) [PHP4]
- int mb_strrpos(string 文字列, string 部分文字列) [PHP5]
- 「文字列」内で、「部分文字(単一文字でなければならない)」(PHP5では「部分文字列」)が最後に現れる位置を返す(大文字と小文字を区別します)関数です。
- 「部分文字/部分文字列」が存在しない場合は「FALSE」を返します。
- 「部分文字/部分文字列」が存在するか否かを調べたい場合、この関数が返す値が「0」の場合もあるため、「
===
演算子」を使って「if(mb_strrpos($str, $part) === FALSE){処理}
」のように書くか、「is_numeric()
」関数を使用して「if(is_numeric(mb_strrpos($str, $part))){処理}
」と書く必要があります。
- 「エンコード」が省略された場合のデフォルト値は内部文字エンコーディングです。
- この関数は「
strrpos()
」関数のマルチバイト文字対応版です。
以下にサンプル。
<?php
$str = "寝ても覚めてもほでなすPHP";
$part = "も";
echo mb_strrpos($str, $part), "<br />";
if( mb_strrpos($str, "あ") === false ){
echo "not exists<br />";
}
if( is_numeric( mb_strrpos($str, "寝") ) ){
echo "exists<br />";
}
#PHP5で有効
if(substr(PHP_VERSION, 0, 1) >= 5){
$str = "ほでなす管理人が送るほでなすサイエンス(?)";
echo mb_strrpos($str, "ほでなす");
}else
echo "PHP", PHP_VERSION, " is not PHP5.";
/*出力結果
6
not exists
exists
10
*/
?>
PageTop
mb_substr()
関数
- string mb_substr(string 文字列, int 開始位置[, int 長さ[, string エンコード]])
- 「文字列」内の、「開始位置」からの部分文字列を返す関数です。
- 「長さ」が指定されると、指定した長さだけの部分文字列を返します。
- 「開始位置」が負の値の場合は、「文字列」の最後の文字から数えた位置からになります(正確には「文字列」の長さ-「開始位置」からです)。
- 「長さ」が負の値の場合は、長さではなく「文字列」の最後の文字から数えた位置までの部分文字列を返します(正確には「文字列」の長さ-「長さ」の手前までです)。
- 返す文字列が無い場合は「空文字列」を返します。
- 「エンコード」が省略された場合のデフォルト値は内部文字エンコーディングです。
- この関数は「
substr()
」関数のマルチバイト文字対応版です。
以下にサンプル。
<?php
$str = "寝ても覚めてもほでなすPHP";
echo mb_substr($str, 0), "<br />";
echo mb_substr($str, 14), "<br />";
echo mb_substr($str, 3, 2), "<br />";
echo mb_substr($str, -3), "<br />";
echo mb_substr($str, -3, 2), "<br />";
echo mb_substr($str, 3, -2), "<br />";
echo mb_substr($str, -3, -2), "<br />";
/*出力結果
寝ても覚めてもほでなすPHP
(「""」が返された)
覚め
PHP
PH
覚めてもほでなすP
P
*/
?>
PageTop
mb_substr_count()
関数
- int substr_count(string 文字列, string 部分文字列[, string エンコード])
- 「文字列」中の「部分文字列」の出現回数を返す関数です。
- 「エンコード」が省略された場合のデフォルト値は内部文字エンコーディングです。
- この関数は「
substr_count()
」関数のマルチバイト文字対応版です。
以下にサンプル。
<?php
echo $str = str_repeat("ハッスル ", 6)."♪", "<br />";
echo mb_substr_count($str, "ハッスル"), " ハッスル";
/*出力結果
ハッスル ハッスル ハッスル ハッスル ハッスル ハッスル ♪
6 ハッスル
*/
?>
PageTop
作成日:2004年06月13日 最終更新日:2004年12月16日
【通常モード で表示】