多字节字符编码方案和他们相关的问题相当复杂,超越了本文档的范围。 关于这些话题的更多信息请参考以下 URL 和其他资源。

mb_check_encoding

检查字符串在指定的编码里是否有效

说明

bool mb_check_encoding ([ string $var = NULL [, string $encoding = mb_internal_encoding() ]] )

检查指定的字节流在指定的编码里是否有效。它能有效避免所谓的“无效编码攻击(Invalid Encoding Attack)”。

参数

var
要检查的字节流。如果省略了这个参数,此函数会检查所有来自最初请求所有的输入。

encoding
期望的编码。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

mb_chr

Get a specific character

说明

string mb_chr ( int $cp [, string $encoding ] )

Warning

本函数还未编写文档,仅有参数列表。

参数

cp

encoding

返回值

Returns a specific character 或者在失败时返回 FALSE.

参见

  • mb_ord
  • chr

mb_convert_case

对字符串进行大小写转换

说明

string mb_convert_case ( string $str , int $mode [, string $encoding = mb_internal_encoding() ] )

对一个 string 进行大小写转换,转换模式由 mode 指定。

参数

str
要被转换的 string

mode
转换的模式。它可以是 MB_CASE_UPPERMB_CASE_LOWERMB_CASE_TITLE 的其中一个。

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

mode 指定的模式转换 string 大小写后的版本。

Unicode

和类似 strtolowerstrtoupper 的标准大小写转换函数相比, 大小写转换的执行根据 Unicode 字符属性的基础。 因此此函数的行为不受语言环境(locale)设置的影响,能够转换任意具有“字母”属性的字符,例如元音变音A(Ä)。

更多关于 Unicode 属性的信息,请查看 » http://www.unicode.org/unicode/reports/tr21/

范例

示例 #1 mb_convert_case 例子

<?php
$str = "mary had a Little lamb and she loved it so";
$str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
echo $str; // 输出 MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
echo $str; // 输出 Mary Had A Little Lamb And She Loved It So
?>

示例 #2 非拉丁 UTF-8 文本的mb_convert_case 例子

<?php
$str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός";
$str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
echo $str; // 输出 ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ, ΔΡΑΣΚΕΛΊΖΕΙ ΥΠΈΡ ΝΩΘΡΟΎ ΚΥΝΌΣ
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
echo $str; // 输出 Τάχιστη Αλώπηξ Βαφήσ Ψημένη Γη, Δρασκελίζει Υπέρ Νωθρού Κυνόσ
?>

参见

  • mb_strtolower
  • mb_strtoupper
  • strtolower
  • strtoupper
  • ucfirst
  • ucwords

mb_convert_encoding

转换字符的编码

说明

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )

string 类型 str 的字符编码从可选的 from_encoding 转换到 to_encoding

参数

str
要编码的 string

to_encoding
str 要转换成的编码类型。

from_encoding
在转换前通过字符代码名称来指定。它可以是一个 array 也可以是逗号分隔的枚举列表。 如果没有提供 from_encoding,则会使用内部(internal)编码。

参见支持的编码

返回值

编码后的 string

范例

示例 #1 mb_convert_encoding 例子

<?php
/* 转换内部编码为 SJIS */
$str = mb_convert_encoding($str, "SJIS");

/* 将 EUC-JP 转换成 UTF-7 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

/* 从 JIS, eucjp-win, sjis-win 中自动检测编码,并转换 str 到 UCS-2LE */
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

/* "auto" 扩展成 "ASCII,JIS,UTF-8,EUC-JP,SJIS" */
$str = mb_convert_encoding($str, "EUC-JP", "auto");
?>

参见

  • mb_detect_order

mb_convert_kana

Convert "kana" one from another ("zen-kaku", "han-kaku" and more)

说明

string mb_convert_kana ( string $str [, string $option = "KV" [, string $encoding = mb_internal_encoding() ]] )

Performs a "han-kaku" - "zen-kaku" conversion for string str. This function is only useful for Japanese.

参数

str
The string being converted.

option
The conversion option.

Specify with a combination of following options.

OptionMeaning
rConvert "zen-kaku" alphabets to "han-kaku"
RConvert "han-kaku" alphabets to "zen-kaku"
nConvert "zen-kaku" numbers to "han-kaku"
NConvert "han-kaku" numbers to "zen-kaku"
aConvert "zen-kaku" alphabets and numbers to "han-kaku"
AConvert "han-kaku" alphabets and numbers to "zen-kaku" (Characters included in "a", "A" options are U+0021 - U+007E excluding U+0022, U+0027, U+005C, U+007E)
sConvert "zen-kaku" space to "han-kaku" (U+3000 -> U+0020)
SConvert "han-kaku" space to "zen-kaku" (U+0020 -> U+3000)
kConvert "zen-kaku kata-kana" to "han-kaku kata-kana"
KConvert "han-kaku kata-kana" to "zen-kaku kata-kana"
hConvert "zen-kaku hira-gana" to "han-kaku kata-kana"
HConvert "han-kaku kata-kana" to "zen-kaku hira-gana"
cConvert "zen-kaku kata-kana" to "zen-kaku hira-gana"
CConvert "zen-kaku hira-gana" to "zen-kaku kata-kana"
VCollapse voiced sound notation and convert them into a character. Use with "K","H"

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

The converted string.

范例

示例 #1 mb_convert_kana example

<?php
/* Convert all "kana" to "zen-kaku" "kata-kana" */
$str = mb_convert_kana($str, "KVC");

/* Convert "han-kaku" "kata-kana" to "zen-kaku" "kata-kana" 
   and "zen-kaku" alphanumeric to "han-kaku" */
$str = mb_convert_kana($str, "KVa");
?>

mb_convert_variables

转换一个或多个变量的字符编码

说明

string mb_convert_variables ( string $to_encoding , mixed $from_encoding , mixed &$vars [, mixed &$... ] )

将变量 vars 的编码从 from_encoding 转换成编码 to_encoding

mb_convert_variables 会拼接变量数组或对象中的字符串来检测编码,因为短字符串的检测往往会失败。因此,不能在一个数组或对象中混合使用编码。

参数

to_encoding
string 转换成这个编码。

from_encoding
from_encoding 可以指定为一个 array 或者逗号分隔的 string,它将尝试根据 from-coding 来检测编码。 当省略了 from_encoding,将使用 detect_order

vars
vars 是要转换的变量的引用。 参数可以接受 String、Array 和 Object 的类型。 mb_convert_variables 假设所有的参数都具有同样的编码。

...
额外的 vars

返回值

成功时返回转换前的字符编码,失败时返回 FALSE

范例

示例 #1 mb_convert_variables 例子

<?php
/* 转换变量 $post1、$post2 编码为内部(internal)编码 */
$interenc = mb_internal_encoding();
$inputenc = mb_convert_variables($interenc, "ASCII,UTF-8,SJIS-win", $post1, $post2);
?>

mb_decode_mimeheader

解码 MIME 头字段中的字符串

说明

string mb_decode_mimeheader ( string $str )

解码 MIME 头中编码过的字符串 str

参数

str
要解码的 string

返回值

以内部(internal)字符编码解码的 string

参见

  • mb_encode_mimeheader

mb_decode_numericentity

根据 HTML 数字字符串解码成字符

说明

string mb_decode_numericentity ( string $str , array $convmap [, string $encoding = mb_internal_encoding() ] )

将数字字符串的引用str 按指定的字符块转换成字符串。

参数

str
要解码的 string

convmap
convmap 是一个 array,指定了要转换的代码区域。

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

转换后的字符串

范例

示例 #1 convmap 例子

<?php
$convmap = array (
   int start_code1, int end_code1, int offset1, int mask1,
   int start_code2, int end_code2, int offset2, int mask2,
   ........
   int start_codeN, int end_codeN, int offsetN, int maskN );
// Specify Unicode value for start_codeN and end_codeN
// Add offsetN to value and take bit-wise 'AND' with maskN, 
// then convert value to numeric string reference.
?>

参见

  • mb_encode_numericentity

示例 #2 convmap 的例子: 编码(escape) JavaScript 字符串

<?php
function escape_javascript_string($str) {
  $map = [
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,0,0, // 49
          0,0,0,0,0,0,0,0,1,1,
          1,1,1,1,1,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,
          0,1,1,1,1,1,1,0,0,0, // 99
          0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,
          0,0,0,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1, // 149
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1, // 199
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1, // 249
          1,1,1,1,1,1,1, // 255
          ];
  // Char encoding is UTF-8
  $mblen = mb_strlen($str, 'UTF-8');
  $utf32 = bin2hex(mb_convert_encoding($str, 'UTF-32', 'UTF-8'));
  for ($i=0, $encoded=''; $i < $mblen; $i++) {
      $u = substr($utf32, $i*8, 8);
      $v = base_convert($u, 16, 10);
      if ($v < 256 && $map[$v]) {
        $encoded .= '\\x'.substr($u, 6,2);
      } else if ($v == 2028) {
        $encoded .= '\\u2028';
      } else if ($v == 2029) {
        $encoded .= '\\u2029';
      } else {
        $encoded .= mb_convert_encoding(hex2bin($u), 'UTF-8', 'UTF-32');
      }
   }
   return $encoded;
}
 
// Test data
$convmap = [ 0x0, 0xffff, 0, 0xffff ];
$msg = '';
for ($i=0; $i < 1000; $i++) {
  // chr() cannot generate correct UTF-8 data larger value than 128, use mb_decode_numericentity().
  $msg .= mb_decode_numericentity('&#'.$i.';', $convmap, 'UTF-8');
}
 
// var_dump($msg);
var_dump(escape_javascript_string($msg));

mb_detect_encoding

检测字符的编码

说明

string mb_detect_encoding ( string $str [, mixed $encoding_list = mb_detect_order() [, bool $strict = false ]] )

检测字符串 str 的编码。

参数

str
待检查的字符串

encoding_list
encoding_list 是一个字符编码列表。 编码顺序可以由数组或者逗号分隔的列表字符串指定。

如果省略了 encoding_list 将会使用 detect_order。

strict
strict 指定了是否严格地检测编码。 默认是 FALSE

返回值

检测到的字符编码,或者无法检测指定字符串的编码时返回 FALSE

范例

示例 #1 mb_detect_encoding 例子

<?php
/* 使用当前的 detect_order 来检测字符编码 */
echo mb_detect_encoding($str);

/* "auto" 将根据 mbstring.language 来扩展 */
echo mb_detect_encoding($str, "auto");

/* 通过逗号分隔的列表来指定编码列表 encoding_list */
echo mb_detect_encoding($str, "JIS, eucjp-win, sjis-win");

/* 使用数组来指定编码列表 encoding_list  */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
echo mb_detect_encoding($str, $ary);
?>

参见

  • mb_detect_order

mb_detect_order

设置/获取 字符编码的检测顺序

说明

mixed mb_detect_order ([ mixed $encoding_list = mb_detect_order() ] )

为编码列表 encoding_list 设置自动检测字符编码的顺序。

参数

encoding_list
encoding_list 是一个 array 或者逗号分隔的字符编码列表。 参见支持的编码

如果省略了 encoding_list 参数,它将返回当前字符编码检测顺序的数组。

该设置会影响 mb_detect_encodingmb_send_mail

mbstring 当前实现了以下编码检测筛选器。 如有以下编码列表的无效字节序列,编码的检测将会失败。

UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP

对于 ISO-8859-*mbstring 总是检测为 ISO-8859-*

对于 UTF-16UTF-32UCS2UCS4,编码检测总是会失败。

返回值

设置编码检测顺序时候,成功时返回 TRUE,识别时候返回 FALSE

在获取编码检测顺序的时候,会返回排序过的编码数组。

范例

示例 #1 mb_detect_order 例子

<?php
/* 为检测顺序设置枚举列表 */
mb_detect_order("eucjp-win,sjis-win,UTF-8");

/* 通过数组设置检测顺序 */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
mb_detect_order($ary);

/* 显示当前的检测顺序 */
echo implode(", ", mb_detect_order());
?>

示例 #2 案例展示了无效的检测顺序

; 总是检测为 ISO-8859-1
detect_order = ISO-8859-1, UTF-8

; 总是检测为 UTF-8,由于 ASCII/UTF-7 的值对  UTF-8 是有效的
detect_order = UTF-8, ASCII, UTF-7

参见

  • mb_internal_encoding
  • mb_http_input
  • mb_http_output
  • mb_send_mail

mb_encode_mimeheader

为 MIME 头编码字符串

说明

string mb_encode_mimeheader ( string $str [, string $charset = determined by mb_language() [, string $transfer_encoding = "B" [, string $linefeed = "\r\n" [, int $indent = 0 ]]]] )

按 MIME 头编码方案将指定的字符串 str 进行编码。

参数

str
要编码的 string。 它的编码应该和 mb_internal_encoding 一样。

charset
charset 指定了 str 的字符集名。 其默认值由当前的 NLS 设置(mbstring.language)来确定。

transfer_encoding
transfer_encoding 指定了 MIME 的编码方案。 它可以是 "B"(Base64)也可以是 "Q"(Quoted-Printable)。 如果未设置,将回退为 "B"

linefeed
linefeed 指定了 EOL(行尾)标记,使 mb_encode_mimeheader 执行了一个换行(» RFC 文档中规定,超过长度的一行将换成多行,当前该长度硬式编码为 74 个字符)。 如果没有设定,则回退为 "\r\n" (CRLF)。

indent
首行缩进(header 里 str 前的字符数目)。

返回值

转换后的字符串版本以 ASCII 形式表达。

范例

示例 #1 mb_encode_mimeheader 例子

<?php
$name = ""; // kanji
$mbox = "kru";
$doma = "gtinn.mon";
$addr = mb_encode_mimeheader($name, "UTF-7", "Q") . " <" . $mbox . "@" . $doma . ">";
echo $addr;
?>

注释

Note:

这个函数没有设计成据更高级上下文的中断点来换行(单词边界等)。 这个特性将导致意外的空格可能会让原始字符串看上去很乱。

参见

  • mb_decode_mimeheader

mb_encode_numericentity

Encode character to HTML numeric string reference

说明

string mb_encode_numericentity ( string $str , array $convmap [, string $encoding = mb_internal_encoding() [, bool $is_hex = FALSE ]] )

Converts specified character codes in string str from character code to HTML numeric character reference.

参数

str
The string being encoded.

convmap
convmap is array specifies code area to convert.

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

is_hex
Whether the returned entity reference should be in hexadecimal notation (otherwise it is in decimal notation).

返回值

The converted string.

更新日志

版本说明
5.4.0Added is_hex parameter.

范例

示例 #1 convmap example

<?php
$convmap = array (
 int start_code1, int end_code1, int offset1, int mask1,
 int start_code2, int end_code2, int offset2, int mask2,
 ........
 int start_codeN, int end_codeN, int offsetN, int maskN );
// Specify Unicode value for start_codeN and end_codeN
// Add offsetN to value and take bit-wise 'AND' with maskN, then
// it converts value to numeric string reference.
?>

范例

示例 #2 mb_encode_numericentity example

<?php
/* Convert Left side of ISO-8859-1 to HTML numeric character reference */
$convmap = array(0x80, 0xff, 0, 0xff);
$str = mb_encode_numericentity($str, $convmap, "ISO-8859-1");

/* Convert user defined SJIS-win code in block 95-104 to numeric
   string reference */
$convmap = array(
       0xe000, 0xe03e, 0x1040, 0xffff,
       0xe03f, 0xe0bb, 0x1041, 0xffff,
       0xe0bc, 0xe0fa, 0x1084, 0xffff,
       0xe0fb, 0xe177, 0x1085, 0xffff,
       0xe178, 0xe1b6, 0x10c8, 0xffff,
       0xe1b7, 0xe233, 0x10c9, 0xffff,
       0xe234, 0xe272, 0x110c, 0xffff,
       0xe273, 0xe2ef, 0x110d, 0xffff,
       0xe2f0, 0xe32e, 0x1150, 0xffff,
       0xe32f, 0xe3ab, 0x1151, 0xffff );
$str = mb_encode_numericentity($str, $convmap, "sjis-win");
?>

参见

  • mb_decode_numericentity

mb_encoding_aliases

Get aliases of a known encoding type

说明

array mb_encoding_aliases ( string $encoding )

Returns an array of aliases for a known encoding type.

参数

encoding
The encoding type being checked, for aliases.

返回值

Returns a numerically indexed array of encoding aliases on success, 或者在失败时返回 FALSE

错误/异常

Emits an E_WARNING level error if encoding is unknown.

范例

示例 #1 mb_encoding_aliases example

<?php
$encoding        = 'ASCII';
$known_encodings = mb_list_encodings();

if (in_array($encoding, $known_encodings)) {

    $aliases = mb_encoding_aliases($encoding);
    print_r($aliases);

} else {

    echo "Unknown ($encoding) encoding.\n";

}
?>

以上例程的输出类似于:

Array
(
    [0] => ANSI_X3.4-1968
    [1] => iso-ir-6
    [2] => ANSI_X3.4-1986
    [3] => ISO_646.irv:1991
    [4] => US-ASCII
    [5] => ISO646-US
    [6] => us
    [7] => IBM367
    [8] => cp367
    [9] => csASCII
)

参见

  • mb_list_encodings

mb_ereg_match

Regular expression match for multibyte string

说明

bool mb_ereg_match ( string $pattern , string $string [, string $option = "msr" ] )

A regular expression match for a multibyte string

参数

pattern
The regular expression pattern.

string
The string being evaluated.

option
The search option. See mb_regex_set_options for explanation.

返回值

Returns TRUE if string matches the regular expression pattern, FALSE if not.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding
  • mb_ereg

mb_ereg_replace_callback

Perform a regular expression search and replace with multibyte support using a callback

说明

string mb_ereg_replace_callback ( string $pattern , callable $callback , string $string [, string $option = "msr" ] )

Scans string for matches to pattern, then replaces the matched text with the output of callback function.

The behavior of this function is almost identical to mb_ereg_replace, except for the fact that instead of replacement parameter, one should specify a callback.

参数

pattern
The regular expression pattern.

Multibyte characters may be used in pattern.

callback
A callback that will be called and passed an array of matched elements in the subject string. The callback should return the replacement string.

You'll often need the callback function for a mb_ereg_replace_callback in just one place. In this case you can use an anonymous function to declare the callback within the call to mb_ereg_replace_callback. By doing it this way you have all information for the call in one place and do not clutter the function namespace with a callback function's name not used anywhere else.

string
The string being checked.

option
The search option. See mb_regex_set_options for explanation.

返回值

The resultant string on success, or FALSE on error.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

范例

示例 #1 mb_ereg_replace_callback example

<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// the callback function
function next_year($matches)
{
  // as usual: $matches[0] is the complete match
  // $matches[1] the match for the first subpattern
  // enclosed in '(...)' and so on
  return $matches[1].($matches[2]+1);
}
echo mb_ereg_replace_callback(
            "(\d{2}/\d{2}/)(\d{4})",
            "next_year",
            $text);

?>

以上例程会输出:

April fools day is 04/01/2003
Last christmas was 12/24/2002

示例 #2 mb_ereg_replace_callback using anonymous function supported in PHP 5.3.0 or later

<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";

echo mb_ereg_replace_callback(
            "(\d{2}/\d{2}/)(\d{4})",
            function ($matches) {
               return $matches[1].($matches[2]+1);
            },
            $text);
?>

参见

mb_ereg_replace

Replace regular expression with multibyte support

说明

string mb_ereg_replace ( string $pattern , string $replacement , string $string [, string $option = "msr" ] )

Scans string for matches to pattern, then replaces the matched text with replacement

参数

pattern
The regular expression pattern.

Multibyte characters may be used in pattern.

replacement
The replacement text.

string
The string being checked.

option
The search option. See mb_regex_set_options for explanation.

返回值

The resultant string on success, or FALSE on error.

更新日志

版本说明
7.1.0The e modifier has been deprecated.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

Warning

处理非信任的输入时从不使用 e 修饰符,就不会转码(即调用 preg_replace)。不注意这些会很可能会导致应用程序引发远程代码执行的漏洞。

参见

  • mb_regex_encoding
  • mb_eregi_replace

mb_ereg_search_getpos

Returns start point for next regular expression match

说明

int mb_ereg_search_getpos ( void )

Returns the start point for the next regular expression match.

参数

此函数没有参数。

返回值

mb_ereg_search_getpos returns the point to start regular expression match for mb_ereg_search, mb_ereg_search_pos, mb_ereg_search_regs. The position is represented by bytes from the head of string.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding
  • mb_ereg_search_setpos

mb_ereg_search_getregs

Retrieve the result from the last multibyte regular expression match

说明

array mb_ereg_search_getregs ( void )

Retrieve the result from the last multibyte regular expression match

参数

此函数没有参数。

返回值

An array including the sub-string of matched part by last mb_ereg_search, mb_ereg_search_pos, mb_ereg_search_regs. If there are some matches, the first element will have the matched sub-string, the second element will have the first part grouped with brackets, the third element will have the second part grouped with brackets, and so on. It returns FALSE on error;

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding
  • mb_ereg_search_init

mb_ereg_search_init

Setup string and regular expression for a multibyte regular expression match

说明

bool mb_ereg_search_init ( string $string [, string $pattern [, string $option = "msr" ]] )

mb_ereg_search_init sets string and pattern for a multibyte regular expression. These values are used for mb_ereg_search, mb_ereg_search_pos, and mb_ereg_search_regs.

参数

string
The search string.

pattern
The search pattern.

option
The search option. See mb_regex_set_options for explanation.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding
  • mb_ereg_search_regs

mb_ereg_search_pos

Returns position and length of a matched part of the multibyte regular expression for a predefined multibyte string

说明

array mb_ereg_search_pos ([ string $pattern [, string $option = "ms" ]] )

Returns position and length of a matched part of the multibyte regular expression for a predefined multibyte string

The string for match is specified by mb_ereg_search_init. If it is not specified, the previous one will be used.

参数

pattern
The search pattern.

option
The search option. See mb_regex_set_options for explanation.

返回值

An array containing two elements. The first element is the offset, in bytes, where the match begins relative to the start of the search string, and the second element is the length in bytes of the match.

If an error occurs, FALSE is returned.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding
  • mb_ereg_search_init

mb_ereg_search_regs

Returns the matched part of a multibyte regular expression

说明

array mb_ereg_search_regs ([ string $pattern [, string $option = "ms" ]] )

Returns the matched part of a multibyte regular expression.

参数

pattern
The search pattern.

option
The search option. See mb_regex_set_options for explanation.

返回值

mb_ereg_search_regs executes the multibyte regular expression match, and if there are some matched part, it returns an array including substring of matched part as first element, the first grouped part with brackets as second element, the second grouped part as third element, and so on. It returns FALSE on error.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding
  • mb_ereg_search_init

mb_ereg_search_setpos

Set start point of next regular expression match

说明

bool mb_ereg_search_setpos ( int $position )

mb_ereg_search_setpos sets the starting point of a match for mb_ereg_search.

参数

position
The position to set. If it is negative, it counts from the end of the string.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

更新日志

版本说明
7.1.0Support for negative positions has been added.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding
  • mb_ereg_search_init

mb_ereg_search

Multibyte regular expression match for predefined multibyte string

说明

bool mb_ereg_search ([ string $pattern [, string $option = "ms" ]] )

Performs a multibyte regular expression match for a predefined multibyte string.

参数

pattern
The search pattern.

option
The search option. See mb_regex_set_options for explanation.

返回值

mb_ereg_search returns TRUE if the multibyte string matches with the regular expression, or FALSE otherwise. The string for matching is set by mb_ereg_search_init. If pattern is not specified, the previous one is used.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding
  • mb_ereg_search_init

mb_ereg

Regular expression match with multibyte support

说明

int mb_ereg ( string $pattern , string $string [, array &$regs ] )

Executes the regular expression match with multibyte support.

参数

pattern
The search pattern.

string
The search string.

regs
If matches are found for parenthesized substrings of pattern and the function is called with the third argument regs, the matches will be stored in the elements of the array regs. If no matches are found, regs is set to an empty array.

$regs[1] will contain the substring which starts at the first left parenthesis; $regs[2] will contain the substring starting at the second, and so on. $regs[0] will contain a copy of the complete string matched.

返回值

Returns the byte length of the matched string if a match for pattern was found in string, or FALSE if no matches were found or an error occurred.

If the optional parameter regs was not passed or the length of the matched string is 0, this function returns 1.

更新日志

版本说明
7.1.0mb_ereg will now set regs to an empty array, if nothing matched. Formerly, regs was not modified in that case.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding
  • mb_eregi

mb_eregi_replace

Replace regular expression with multibyte support ignoring case

说明

string mb_eregi_replace ( string $pattern , string $replace , string $string [, string $option = "msri" ] )

Scans string for matches to pattern, then replaces the matched text with replacement.

参数

pattern
The regular expression pattern. Multibyte characters may be used. The case will be ignored.

replace
The replacement text.

string
The searched string.

option
The search option. See mb_regex_set_options for explanation.

返回值

The resultant string or FALSE on error.

更新日志

版本说明
7.1.0The e modifier has been deprecated.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

Warning

处理非信任的输入时从不使用 e 修饰符,就不会转码(即调用 preg_replace)。不注意这些会很可能会导致应用程序引发远程代码执行的漏洞。

参见

  • mb_regex_encoding
  • mb_ereg_replace

mb_eregi

Regular expression match ignoring case with multibyte support

说明

int mb_eregi ( string $pattern , string $string [, array &$regs ] )

Executes the case insensitive regular expression match with multibyte support.

参数

pattern
The regular expression pattern.

string
The string being searched.

regs
If matches are found for parenthesized substrings of pattern and the function is called with the third argument regs, the matches will be stored in the elements of the array regs. If no matches are found, regs is set to an empty array.

$regs[1] will contain the substring which starts at the first left parenthesis; $regs[2] will contain the substring starting at the second, and so on. $regs[0] will contain a copy of the complete string matched.

返回值

Returns the byte length of the matched string if a match for pattern was found in string, or FALSE if no matches were found or an error occurred.

If the optional parameter regs was not passed or the length of the matched string is 0, this function returns 1.

更新日志

版本说明
7.1.0mb_eregi will now set regs to an empty array, if nothing matched. Formerly, regs was not modified in that case.

注释

Note:

mb_regex_encoding 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding
  • mb_ereg

mb_get_info

获取 mbstring 的内部设置

说明

mixed mb_get_info ([ string $type = "all" ] )

mb_get_info 返回 mbstring 参数的内部设定。

参数

type
如果没有设定 type,或者将其设定为 "all",将会返回一个 array,并且包含了以下所有元素:"internal_encoding", "http_output", "http_input", "func_overload", "mail_charset", "mail_header_encoding", "mail_body_encoding"。

如果 type 设定为类似 "http_output", "http_input", "internal_encoding", "func_overload",将返回该参数的设置。

返回值

如果没有指定 type 将返回类型信息的数组,否则将返回指定 type 的信息。

更新日志

版本说明
5.1.3实体 "mail_charset"、"mail_header_encoding" 和 "mail_body_encoding" 开始有效。
5.3.0条目 "http_output_conv_mimetypes" 开始有效。

参见

  • mb_regex_encoding
  • mb_http_output

mb_http_input

检测 HTTP 输入字符编码

说明

mixed mb_http_input ([ string $type = "" ] )

检测 HTTP 输入字符的编码。

参数

type
设置的字符串指定了输入类型。 "G" 是 GET,"P" 是 POST,"C" 是 COOKIE,"S" 是 string,"L" 是 list,以及 "I" 是整个列表(将会返回 array)。 如果省略了 type,它将返回最后处理的一种输入类型。

返回值

每个 type 的字符编码名称。 如果 mb_http_input 没有处理过任何指定的 HTTP 输入,它将返回 FALSE

参见

  • mb_internal_encoding
  • mb_http_output
  • mb_detect_order

mb_http_output

设置/获取 HTTP 输出字符编码

说明

mixed mb_http_output ([ string $encoding = mb_http_output() ] )

设置/获取 HTTP 输出字符编码。此函数被调用之后输出的内容会被转换成 encoding

参数

encoding
如果设置了 encodingmb_http_output 设置 HTTP 输出字符编码为 encoding

如果省略了 encodingmb_http_output 返回当前的 HTTP 输出字符编码。

返回值

如果省略了 encodingmb_http_output 返回当前的 HTTP 输出字符编码。 否则成功时返回 TRUE, 或者在失败时返回 FALSE

参见

  • mb_internal_encoding
  • mb_http_input
  • mb_detect_order

mb_internal_encoding

设置/获取内部字符编码

说明

mixed mb_internal_encoding ([ string $encoding = mb_internal_encoding() ] )

设置/获取内部字符编码

参数

encoding
encoding 字符编码名称使用于 HTTP 输入字符编码转换、HTTP 输出字符编码转换、mbstring 模块系列函数字符编码转换的默认编码。 You should notice that the internal encoding is totally different from the one for multibyte regex.

返回值

如果设置了 encoding,则成功时返回 TRUE, 或者在失败时返回 FALSE。 In this case, the character encoding for multibyte regex is NOT changed. 如果省略了 encoding,则返回当前的字符编码名称。

范例

示例 #1 mb_internal_encoding 例子

<?php
/* 设置内部字符编码为 UTF-8 */
mb_internal_encoding("UTF-8");

/* 显示当前的内部字符编码*/
echo mb_internal_encoding();
?>

参见

  • mb_http_input
  • mb_http_output
  • mb_detect_order
  • mb_regex_encoding

mb_language

设置/获取当前的语言

说明

mixed mb_language ([ string $language = mb_language() ] )

设置/获取当前的语言。

参数

language
用于编码邮件信息。有效的语言有:"Japanese","ja","English","en" 和 "uni"(UTF-8)。 mb_send_mail 使用了该设置来对邮件进行编码。

语言和它的设置,日文是 ISO-2022-JP/Base64,uni 是 UTF-8/Base64,英文是 ISO-8859-1/quoted。

返回值

如果设置了 language,并且 language 是有效的,它将返回 TRUE。否则将返回 FALSE。 当省略了 language 参数,它将返回语言名称的 string。如果之前没有设置过语言,则将返回 FALSE

参见

  • mb_send_mail

mb_list_encodings

返回所有支持编码的数组

说明

array mb_list_encodings ( void )

返回所有支持编码的数组。

参数

此函数没有参数。

返回值

返回一个数字索引数组。

错误/异常

该函数不会触发任何错误。

范例

示例 #1 mb_list_encodings 例子

<?php

print_r(mb_list_encodings());

?>

以上例程的输出类似于:

Array
(
    [0] => pass
    [1] => auto
    [2] => wchar
    [3] => byte2be
    [4] => byte2le
    [5] => byte4be
    [6] => byte4le
    [7] => BASE64
    [8] => UUENCODE
    [9] => HTML-ENTITIES
    [10] => Quoted-Printable
    [11] => 7bit
    [12] => 8bit
    [13] => UCS-4
    [14] => UCS-4BE
    [15] => UCS-4LE
    [16] => UCS-2
    [17] => UCS-2BE
    [18] => UCS-2LE
    [19] => UTF-32
    [20] => UTF-32BE
    [21] => UTF-32LE
    [22] => UTF-16
    [23] => UTF-16BE
    [24] => UTF-16LE
    [25] => UTF-8
    [26] => UTF-7
    [27] => UTF7-IMAP
    [28] => ASCII
    [29] => EUC-JP
    [30] => SJIS
    [31] => eucJP-win
    [32] => SJIS-win
    [33] => JIS
    [34] => ISO-2022-JP
    [35] => Windows-1252
    [36] => ISO-8859-1
    [37] => ISO-8859-2
    [38] => ISO-8859-3
    [39] => ISO-8859-4
    [40] => ISO-8859-5
    [41] => ISO-8859-6
    [42] => ISO-8859-7
    [43] => ISO-8859-8
    [44] => ISO-8859-9
    [45] => ISO-8859-10
    [46] => ISO-8859-13
    [47] => ISO-8859-14
    [48] => ISO-8859-15
    [49] => EUC-CN
    [50] => CP936
    [51] => HZ
    [52] => EUC-TW
    [53] => BIG-5
    [54] => EUC-KR
    [55] => UHC
    [56] => ISO-2022-KR
    [57] => Windows-1251
    [58] => CP866
    [59] => KOI8-R
)

mb_ord

Get code point of character

说明

int mb_ord ( string $str [, string $encoding ] )

Warning

本函数还未编写文档,仅有参数列表。

参数

str

encoding

返回值

Returns a code point of character 或者在失败时返回 FALSE.

参见

  • mb_chr
  • ord

mb_output_handler

在输出缓冲中转换字符编码的回调函数

说明

string mb_output_handler ( string $contents , int $status )

mb_output_handler 是一个 ob_start 回调函数。 mb_output_handler 将输出缓冲中的字符从内部字符编码转换为 HTTP 输出的字符编码。

参数

contents
输出缓冲的内容。

status
输出缓冲的状态。

返回值

转换后的 string

更新日志

版本 说明
4.1.0

当遇到以下条件的时候,该函数将添加 HTTP 字符编码头:

  • 未使用 header 设置 Content-Type
  • 默认 MIME 类型以 text/ 开始。
  • mbstring.http_input 是除 pass 外的任意设置。

范例

示例 #1 mb_output_handler 例子

<?php
mb_http_output("UTF-8");
ob_start("mb_output_handler");
?>

注释

Note:

如果你想要输出二进制数据,比如图片,必须在任何二进制数据发送到客户端之前使用 header 来设置 Content-Type: 头。(例如 header("Content-Type: image/png"))。 如果 Content-Type: 头已发送,输出字符编码的转换将不会执行。

注意,如果发送了 'Content-Type: text/*',则内容被认为是文本,将发生转换。

参见

  • ob_start

mb_parse_str

解析 GET/POST/COOKIE 数据并设置全局变量

说明

bool mb_parse_str ( string $encoded_string [, array &$result ] )

解析 GET/POST/COOKIE 数据并设置全局变量。 由于 PHP 不提供原始 POST/COOKIE 数据,目前它仅能够用于 GET 数据。 它解析了 URL 编码过的数据,检测其编码,并转换编码为内部编码,然后设置其值为 arrayresult 或者全局变量。

参数

encoded_string
URL 编码过的数据。

result
一个 array,包含解码过的、编码转换后的值。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

参见

  • mb_detect_order
  • mb_internal_encoding

mb_preferred_mime_name

获取 MIME 字符串

说明

string mb_preferred_mime_name ( string $encoding )

获取指定编码的 MIME 字符 string

参数

encoding
要检查的字符串。

返回值

字符编码 encoding 的 MIME charset string

范例

示例 #1 mb_preferred_mime_name 例子

<?php
$outputenc = "sjis-win";
mb_http_output($outputenc);
ob_start("mb_output_handler");
header("Content-Type: text/html; charset=" . mb_preferred_mime_name($outputenc));
?>

mb_regex_encoding

Set/Get character encoding for multibyte regex

说明

mixed mb_regex_encoding ([ string $encoding = mb_regex_encoding() ] )

Set/Get character encoding for a multibyte regex.

参数

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

If encoding is set, then 成功时返回 TRUE, 或者在失败时返回 FALSE。 In this case, the internal character encoding is NOT changed. If encoding is omitted, then the current character encoding name for a multibyte regex is returned.

更新日志

版本说明
5.6.0Default encoding is changed to UTF-8. It was EUC-JP Previously.

参见

  • mb_internal_encoding
  • mb_ereg

mb_regex_set_options

Set/Get the default options for mbregex functions

说明

string mb_regex_set_options ([ string $options = mb_regex_set_options() ] )

Sets the default options described by options for multibyte regex functions.

参数

options
The options to set. This is a string where each character is an option. To set a mode, the mode character must be the last one set, however there can only be set one mode but multiple options.

OptionMeaning
iAmbiguity match on
xEnables extended pattern form
m'.' matches with newlines
s'^' -> '\A', '$' -> '\Z'
pSame as both the m and s options
lFinds longest matches
nIgnores empty matches
eeval resulting code
ModeMeaning
jJava (Sun java.util.regex)
uGNU regex
ggrep
cEmacs
rRuby
zPerl
bPOSIX Basic regex
dPOSIX Extended regex

返回值

The string that describes the current options is returned.

参见

  • mb_split
  • mb_ereg
  • mb_eregi

mb_scrub

Description

说明

string mb_scrub ( string $str [, string $encoding ] )

Warning

本函数还未编写文档,仅有参数列表。

参数

str

encoding

返回值

mb_send_mail

发送编码过的邮件

说明

bool mb_send_mail ( string $to , string $subject , string $message [, string $additional_headers = NULL [, string $additional_parameter = NULL ]] )

发送邮件。邮件头和内容根据 mb_language 设置来转换编码。 这是 mail 的一个包装器函数,所以详情参见 mail

参数

to
被发送到该邮件地址。可通过逗号分隔地址的 to 来指定多个收件人。 该参数不会被自动编码。

subject
邮件标题。

message
邮件消息。

additional_headers(可选)
String to be inserted at the end of the email header.

This is typically used to add extra headers (From, Cc, and Bcc). Multiple extra headers should be separated with a CRLF (\r\n). Validate parameter not to be injected unwanted headers by attackers.

Note:

When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini.

Failing to do this will result in an error message similar to Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. The From header sets also Return-Path under Windows.

Note:

If messages are not received, try using a LF (\n) only. Some Unix mail transfer agents (most notably » qmail) replace LF by CRLF automatically (which leads to doubling CR if CRLF is used). This should be a last resort, as it does not comply with » RFC 2822.

additional_parameter
additional_parameter 是一个 MTA 命令行参数。 在使用 sendmail 时对设置正确的返回路径头很有帮助。

This parameter is escaped by escapeshellcmd internally to prevent command execution. escapeshellcmd prevents command execution, but allows to add addtional parameters. For security reason, this parameter should be validated.

Since escapeshellcmd is applied automatically, some characters that are allowed as email addresses by internet RFCs cannot be used. Programs that are required to use these characters mail cannot be used.

The user that the webserver runs as should be added as a trusted user to the sendmail configuration to prevent a 'X-Warning' header from being added to the message when the envelope sender (-f) is set using this method. For sendmail users, this file is /etc/mail/trusted-users.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

参见

  • mail
  • mb_encode_mimeheader
  • mb_language

mb_split

使用正则表达式分割多字节字符串

说明

array mb_split ( string $pattern , string $string [, int $limit = -1 ] )

使用正则表达式 pattern 分割多字节 string 并返回结果 array

参数

pattern
正则表达式。

string
待分割的 string

limit
如果指定了可选参数 limit,将最多分割为 limit 个元素。

返回值

array 的结果。

注释

Note:

The character encoding specified by class="function">mb_regex_encoding will be used as the character encoding for this function by default.

参见

  • mb_regex_encoding
  • mb_ereg

mb_str_split

Given a multibyte string, return an array of its characters

说明

array mb_str_split ( string $string [, int $split_length = 1 [, string $encoding = mb_internal_encoding() ]] )

This function will return an array of strings, it is a version of str_split with support for encodings of variable character size as well as fixed-size encodings of 1,2 or 4 byte characters. If the split_length parameter is specified, the string is broken down into chunks of the specified length in characters (not bytes). The encoding parameter can be optionally specified and it is good practice to do so.

参数

string
The string to split into characters or chunks.

split_length
If specified, each element of the returned array will be composed of multiple characters instead of a single character.

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

A string specifying one of the supported encodings.

返回值

mb_str_split returns an array of strings, 或者在失败时返回 FALSE.

参见

  • str_split

mb_strcut

获取字符的一部分

说明

string mb_strcut ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )

mb_strcutmb_substr 类似,都是从字符串中提取子字符串,但是按字节数来执行,而不是字符个数。 如果截断位置位于多字节字符两个字节的中间,将于该字符的第一个字节开始执行。 这也是和 substr 函数的不同之处,后者简单地将字符串在字节之间截断,这将导致一个畸形的字节序列。

参数

str
要截断的 string

start
如果 start 不是负数,返回的字符串会从 str 的第 start 字节位置开始,从 0 开始计数。举个例子,字符串 'abcdef',字节位置 0 的字符是 'a',字节位置 2 的字符是 'c',以此类推。

如果 start 是负数,返回的字符串是从 str 末尾处第 start 个字节开始的。

length
字节长度。If omitted or NULL is passed, extract all bytes to the end of the string.

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

mb_strcut 根据 startlength 参数返回 str 的一部分。

更新日志

版本说明
5.4.8Passing NULL as length extracts all bytes to the end of the string. Prior to this version NULL was treated the same as 0.

参见

  • mb_substr
  • mb_internal_encoding

mb_strimwidth

获取按指定宽度截断的字符串

说明

string mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker = "" [, string $encoding = mb_internal_encoding() ]] )

width字符串 str 截短。

参数

str
要截短的 string

start
开始位置的偏移。从这些字符数开始的截取字符串。(默认是 0 个字符) 如果 start 是负数,就是字符串结尾处的字符数。

width
所需修剪的宽度。负数的宽度是从字符串结尾处统计的。

trimmarker
当字符串被截短的时候,将此字符串添加到截短后的末尾。

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

截短后的 string。 如果设置了 trimmarker,还将结尾处的字符替换为 trimmarker ,并符合 width 的宽度。

更新日志

版本说明
7.1.0支持负数的 startwidth

范例

示例 #1 mb_strimwidth 例子

<?php
echo mb_strimwidth("Hello World", 0, 10, "...");
// 输出 Hello W...
?>

参见

  • mb_strwidth
  • mb_internal_encoding

mb_stripos

大小写不敏感地查找字符串在另一个字符串中首次出现的位置

说明

int mb_stripos ( string $haystack , string $needle [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] )

mb_stripos 返回 needle 在字符串 haystack 中首次出现位置的数值。 和 mb_strpos 不同的是,mb_stripos 是大小写不敏感的。 如果 needle 没找到,它将返回 FALSE

参数

haystack
在这个字符串中查找获取 needle 首次出现的位置

needle
haystack 中查找这个字符串

offset
haystack 里开始搜索的位置。如果是负数,就从字符串的尾部开始统计。

encoding
使用的字符编码名称。 如果省略了它,将使用内部字符编码。

返回值

返回字符串 haystackneedle 首次出现位置的数值。 如果没有找到 needle,它将返回 FALSE

更新日志

版本说明
7.1.0支持 offset 使用负数。

参见

  • stripos
  • strpos
  • mb_strpos

mb_stristr

大小写不敏感地查找字符串在另一个字符串里的首次出现

说明

string mb_stristr ( string $haystack , string $needle [, bool $before_needle = false [, string $encoding = mb_internal_encoding() ]] )

mb_strstr 查找了 needlehaystack 中首次的出现并返回 haystack 的一部分。 和 mb_strstr 不同的是,mb_stristr 是大小写不敏感的。 如果 needle 没有找到,它将返回 FALSE

参数

haystack
要获取 needle 首次出现的字符串。

needle
haystack 中查找这个字符串。

before_needle
决定这个函数返回 haystack 的哪一部分。 如果设置为 TRUE,它返回 haystack 中从开始到 needle 出现位置的所有字符(不包括 needle)。 如果设置为 FALSE,它返回 haystackneedle 出现位置到最后的所有字符(包括了 needle)。

encoding
要使用的字符编码名称。 如果省略该参数,将使用内部字符编码。

返回值

返回 haystack 的一部分,或者 needle 没找到则返回 FALSE

参见

  • stristr
  • strstr
  • mb_strstr

mb_strlen

获取字符串的长度

说明

mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )

获取一个 string 的长度。

参数

str
要检查长度的字符串

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

返回具有 encoding 编码的字符串 str 包含的字符数。 多字节的字符被计为 1。

如果给定的 encoding 无效则返回 FALSE

参见

  • mb_internal_encoding
  • grapheme_strlen
  • iconv_strlen
  • strlen

mb_strpos

查找字符串在另一个字符串中首次出现的位置

说明

int mb_strpos ( string $haystack , string $needle [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] )

查找 string 在一个 string 中首次出现的位置。

基于字符数执行一个多字节安全的 strpos 操作。 第一个字符的位置是 0,第二个字符的位置是 1,以此类推。

参数

haystack
要被检查的 string

needle
haystack 中查找这个字符串。 和 strpos 不同的是,数字的值不会被当做字符的顺序值。

offset
搜索位置的偏移。如果没有提供该参数,将会使用 0。负数的 offset 会从字符串尾部开始统计。

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

返回 stringhaystackneedle 首次出现位置的数值。 如果没有找到 needle,它将返回 FALSE

更新日志

版本说明
7.1.0支持负数的 offset

参见

  • mb_internal_encoding
  • strpos

mb_strrchr

查找指定字符在另一个字符串中最后一次的出现

说明

string mb_strrchr ( string $haystack , string $needle [, bool $part = false [, string $encoding = mb_internal_encoding() ]] )

mb_strrchr 查找了 needlehaystack 中最后一次出现的位置,并返回 haystack 的部分。 如果没有找到 needle,它将返回 FALSE

参数

haystack
在该字符串中查找 needle 最后出现的位置

needle
haystack 中查找这个字符串

part
决定这个函数返回 haystack 的哪一部分。 如果设置为 TRUE,它将返回的字符是从 haystack 的开始到 needle 最后出现的位置。 如果设置为 FALSE,它将返回的字符是从 needle 最后出现的位置到 haystack 的末尾。

encoding
使用的字符编码名称。如果省略了,则将使用内部编码。

返回值

返回 haystack 的一部分。 或者在没有找到 needle 时返回 FALSE

参见

  • strrchr
  • mb_strstr
  • mb_strrichr

mb_strrichr

大小写不敏感地查找指定字符在另一个字符串中最后一次的出现

说明

string mb_strrichr ( string $haystack , string $needle [, bool $part = false [, string $encoding = mb_internal_encoding() ]] )

mb_strrichr 大小写不敏感地查找指定 needlehaystack 中最后一次的出现,并返回 haystack 的一部分。 和 mb_strrchr 不同的是,mb_strrichr 是大小写不敏感的。 如果 needle 没有找到,它将返回 FALSE

参数

haystack
在该字符串中查找 needle 的最后出现位置

needle
needle 中查找该字符串

part
决定这个函数返回 haystack 的哪一部分。 如果设置为 TRUE,它将返回的字符是从 haystack 的开始到 needle 最后出现的位置。 如果设置为 FALSE,它将返回的字符是从 needle 最后出现的位置到 haystack 的末尾。

encoding
使用的字符编码名称。如果省略了,则将使用内部编码。

返回值

返回 haystack 的一部分。 或者在没有找到 needle 时返回 FALSE

参见

  • mb_stristr
  • mb_strrchr

mb_strripos

大小写不敏感地在字符串中查找一个字符串最后出现的位置

说明

int mb_strripos ( string $haystack , string $needle [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] )

mb_strripos 基于字符数执行一个多字节安全的 strripos 操作。 needle 的位置是从 haystack 的开始进行统计的。 第一个字符的位置是 0,第二个字符的位置是 1。 和 mb_strrpos 不同的是,mb_strripos 是大小写不敏感的。

参数

haystack
查找 needle 在这个字符串中最后出现的位置。

needle
haystack 中查找这个字符串。

offset
haystack 中开始搜索的位置。

encoding
使用的字符编码名称。如果省略了,则将使用内部编码。

返回值

返回字符串 haystackneedle 最后出现位置的数值。 如果没有找到 needle,它将返回 FALSE

参见

  • strripos
  • strrpos
  • mb_strrpos

mb_strrpos

查找字符串在一个字符串中最后出现的位置

说明

int mb_strrpos ( string $haystack , string $needle [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] )

基于字符数执行一个多字节安全的 strrpos 操作。 needle 的位置是从 haystack 的开始进行统计的。 第一个字符的位置是 0,第二个字符的位置是 1。

参数

haystack
查找 needle 在这个 string 中最后出现的位置。

needle
haystack 中查找这个 string

offset
可以用于指定 string 里从任意字符数开始进行搜索。 负数的值将导致搜索会终止于指向 string 末尾的任意点。

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

返回 stringhaystack 中,needle 最后出现位置的数值。 如果没有找到 needle,它将返回 FALSE

更新日志

版本说明
5.2.0增加了可选参数 offset

注释

Note: 从 PHP 5.2.0 开始,encoding 参数从第三个位置移到了第四个位置。 为实现向后兼容,可以将第三个参数指定为 encoding,但不建议这么做,在将来会移除这个特性。

参见

  • mb_strpos
  • mb_internal_encoding
  • strrpos

mb_strstr

查找字符串在另一个字符串里的首次出现

说明

string mb_strstr ( string $haystack , string $needle [, bool $before_needle = false [, string $encoding = mb_internal_encoding() ]] )

mb_strstr 查找了 needlehaystack 中首次的出现并返回 haystack 的一部分。 如果 needle 没有找到,它将返回 FALSE

参数

haystack
要获取 needle 首次出现的字符串。

needle
haystack 中查找这个字符串。

before_needle
决定这个函数返回 haystack 的哪一部分。 如果设置为 TRUE,它返回 haystack 中从开始到 needle 出现位置的所有字符(不包括 needle)。 如果设置为 FALSE,它返回 haystackneedle 出现位置到最后的所有字符(包括了 needle)。

encoding
要使用的字符编码名称。 如果省略该参数,将使用内部字符编码。

返回值

返回 haystack 的一部分,或者 needle 没找到则返回 FALSE

参见

  • stristr
  • strstr
  • mb_stristr

mb_strtolower

使字符串小写

说明

string mb_strtolower ( string $str [, string $encoding = mb_internal_encoding() ] )

返回所有字母字符转换成小写的 str

参数

str
要被小写的字符串

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

所有字母字符已被转换成小写的 str

Unicode

更多关于 Unicode 属性的信息,请参见 » http://www.unicode.org/unicode/reports/tr21/

strtolower 不同的是,“字母”字符的检测是根据字符的 Unicode 属性。 因此函数的行为不会受语言设置的影响,能偶转换任意具有“字母”属性的字符,例如元音变音 A(Ä)。

范例

示例 #1 mb_strtolower 例子

<?php
$str = "Mary Had A Little Lamb and She LOVED It So";
$str = mb_strtolower($str);
echo $str; // 输出: mary had a little lamb and she loved it so
?>

示例 #2 非拉丁 UTF-8 文本的 mb_strtolower 例子

<?php
$str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός";
$str = mb_strtolower($str, 'UTF-8');
echo $str; // 输出 τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός
?>

参见

  • mb_strtoupper
  • mb_convert_case
  • strtolower

mb_strtoupper

使字符串大写

说明

string mb_strtoupper ( string $str [, string $encoding = mb_internal_encoding() ] )

将所有的字母字符转化成大写并返回 str

参数

str
要大写的 string

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

str 里所有的字母都转换成大写的。

Unicode

更多 Unicode 属性的信息,请参见 » http://www.unicode.org/unicode/reports/tr21/

strtoupper 不同的是,“字母”是通过 Unicode 字符属性来确定的。 因此这个函数不会受语言环境(locale)设置影响,能够转化任何具有“字母”属性的字符,例如 a 变音符号(ä)。

范例

示例 #1 mb_strtoupper 例子

<?php
$str = "Mary Had A Little Lamb and She LOVED It So";
$str = mb_strtoupper($str);
echo $str; // Prints MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
?>

示例 #2 非拉丁 UTF-8 文本的 mb_strtoupper 例子

<?php
$str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός";
$str = mb_strtoupper($str, 'UTF-8');
echo $str; // 打印了 ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ, ΔΡΑΣΚΕΛΊΖΕΙ ΥΠΈΡ ΝΩΘΡΟΎ ΚΥΝΌΣ
?>

参见

  • mb_strtolower
  • mb_convert_case
  • strtoupper

mb_strwidth

返回字符串的宽度

说明

int mb_strwidth ( string $str [, string $encoding = mb_internal_encoding() ] )

返回 string 类型 str 的宽度。

多字节字符通常是单字节字符的两倍宽度。

字符宽度
U+0000 - U+00190
U+0020 - U+1FFF1
U+2000 - U+FF602
U+FF61 - U+FF9F1
U+FFA0 -2

参数

str
待解码的 string

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

string str 的宽度。

参见

  • mb_strimwidth
  • mb_internal_encoding

mb_substitute_character

设置/获取替代字符

说明

mixed mb_substitute_character ([ mixed $substchar = mb_substitute_character() ] )

当输入字符的编码是无效的,或者字符代码不存在于输出的字符编码中时,可以为其指定一个替代字符。 无效字符可以被替换为 NULL(不输出)、string 或者 integer 值(Unicode 字符代码的值)。

该设置会影响 mb_convert_encodingmb_convert_variablesmb_output_handlermb_send_mail

参数

substchar
指定 Unicode 值为一个 integer,或者是以下字符串中的一个:

  • "none"::不输出
  • *"long"*:输出字符代码的值(比如:*U+3000*、*JIS+7E7E*)
  • *"entity"*:输出字符的实体(比如:*&\#x200;*)

返回值

如果设置了 substchar,在成功时返回 TRUE,失败时返回 FALSE。 如果没有设置 substchar,它将返回当前设置。

范例

示例 #1 mb_substitute_character 例子

<?php
/* 设置为 Unicode U+3013 (GETA MARK) */
mb_substitute_character(0x3013);

/* 设置十六进制格式 */
mb_substitute_character("long");

/* 显示当前设置 */
echo mb_substitute_character();
?>

mb_substr_count

统计字符串出现的次数

说明

int mb_substr_count ( string $haystack , string $needle [, string $encoding = mb_internal_encoding() ] )

统计子字符串 needle 出现在字符串 haystack 中的次数。

参数

haystack
要检查的字符串

needle
待查找的字符串

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

子字符串 needle 出现在字符串 haystack 中的次数。

范例

示例 #1 mb_substr_count 例子

<?php
echo mb_substr_count("This is a test", "is"); // 输出 2
?>

参见

  • mb_strpos
  • mb_substr
  • substr_count

mb_substr

获取部分字符串

说明

string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )

根据字符数执行一个多字节安全的 substr 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1,以此类推。

参数

str
从该 string 中提取子字符串。

start
如果 start 不是负数,返回的字符串会从 strstart 的位置开始,从 0 开始计数。举个例子,字符串 'abcdef',位置 0 的字符是 'a',位置 2 的字符是 'c',以此类推。

如果 start 是负数,返回的字符串是从 str 末尾处第 start 个字符开始的。

length
str 中要使用的最大字符数。如果省略了此参数或者传入了 NULL,则会提取到字符串的尾部。

encoding
encoding 参数为字符编码。如果省略,则使用内部字符编码。

返回值

mb_substr 函数根据 startlength 参数返回 str 中指定的部分。

更新日志

版本说明
5.4.8length 传入 NULL,则从 start 提取到字符串的结尾处。 在之前的版本里, NULL 会被当作 0 来处理。

参见

  • mb_strcut
  • mb_internal_encoding

目录