php多位元組字串

來源:互聯網
上載者:User

簡介

雖然許多語言每個必要字元都能一對一映射到 8 位元(bit)的值,但也有好幾種語言需要非常多的字元來書面通訊,以至於它們的編碼範圍不能僅僅包含在一個位元組裡(一個位元組 Byte 由 8 位元 bit 構成。每一位元僅能包含兩種不同的值: 1 或 0。所以,一位元組僅能夠表示 256 種不同的值,即 2 的八次方)。 開發多位元組字元編碼方案是為了在基於位元組的常規編碼系統中表達超過 256 個字元。

在你操作(trim、split、splice 等等)多位元組編碼的字串的時候,由於在這種編碼方案下,兩個或多個連續位元組可能只表達了一個字元,所以你需要使用專門的函數。 否則,當你將不能檢測多位元組字串的函數應用到這個字串的時候,它可能無法檢測多位元組字元的起始位置,並以亂碼字串結尾,基本丟失了它原來的意思。

mbstring 提供了針對多位元組字串的函數,能夠幫你處理 PHP 中的多位元組編碼。 除此以外,mbstring 還能在可能的字元編碼之間相互進行編碼轉換。 為了方便起見,mbstring 設計成了處理基於 Unicode 的編碼,類似 UTF-8、UCS-2 及諸多單位元組的編碼。

mbstring 不是一個預設擴充。這意味著它預設沒有被啟用。 你必須在 configure 選項中顯式啟用該模組。

HTTP 輸入和輸出

HTTP 輸入/輸出字元編碼轉換同樣也適用於位元據。 如果 HTTP 輸入/輸出用到了位元據,使用者應當控制字元的編碼轉換。

自 PHP 4.3.3 起,如果 HTML 表單的 enctype 屬性設定為 multipart/form-data,並且 php.ini 裡的mbstring.encoding_translation 設定為 On, POST 的變數以及上傳檔案的名稱也將會被轉換到內部字元編碼。 不過,轉換不會應用於查詢(query)的鍵。

HTTP 輸入在 PHP 指令碼裡無法控制 HTTP 輸入字元的轉換。 要禁用 HTTP 輸入字元的轉換,必須要在 php.ini 裡設定。

Example #1 在 php.ini 中禁用 HTTP 輸入轉換

;; 禁用 HTTP 輸入轉換mbstring.http_input = pass;;禁用 HTTP 輸入轉換 (PHP 4.3.0 或更高版本)mbstring.encoding_translation = Off

當 PHP 以 Apache 模組運行。這些設定還可以通過 httpd.conf 內每個虛擬機器主機(Virtual Host)指令或每個目錄下的 .htaccess來覆蓋(override)。
HTTP 輸出輸出字元編碼轉換的使用有幾種方式。 一種是使用 php.ini,另一種是使用 ob_start(),以 mb_output_handler() 作為 ob_start的回呼函數。

Example #2 php.ini 設定例子

;; 為所有 PHP 頁面啟用輸出字元編碼的轉換;; 啟用輸出緩衝output_buffering    = On;; 設定 mb_output_handler 來進行輸出的轉換output_handler      = mb_output_handler

Example #3 指令碼例子

<?php    // 僅為此頁面啟用輸出字元編碼的轉換    // 設定 HTTP 輸出字元編碼為 SJIS    mb_http_output('SJIS');    // 開始緩衝並指定 "mb_output_handler" 為回呼函數    ob_start('mb_output_handler');?>

多位元組字串 函數

mb_check_encoding — 檢查字串在指定的編碼裡是否有效

mb_convert_case — 對字串進行大小寫轉換

mb_convert_encoding — 轉換字元的編碼

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

mb_convert_variables — 轉換一個或多個變數的字元編碼

mb_decode_mimeheader — 解碼 MIME 頭欄位中的字串

mb_decode_numericentity — 根據 HTML 數字字串解碼成字元

mb_detect_encoding — 檢測字元的編碼

mb_detect_order — 設定/擷取 字元編碼的檢測順序

mb_encode_mimeheader — 為 MIME 頭編碼字串

mb_encode_numericentity — Encode character to HTML numeric string reference

mb_encoding_aliases — Get aliases of a known encoding type

mb_ereg_match — Regular expression match for multibyte string

mb_ereg_replace_callback — Perform a regular expresssion seach and replace with multibyte support using a callback

mb_ereg_replace — Replace regular expression with multibyte support

mb_ereg_search_getpos — Returns start point for next regular expression match

mb_ereg_search_getregs — Retrieve the result from the last multibyte regular expression match

mb_ereg_search_init — Setup string and regular expression for a multibyte regular expression match

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

mb_ereg_search_regs — Returns the matched part of a multibyte regular expression

mb_ereg_search_setpos — Set start point of next regular expression match

mb_ereg_search — Multibyte regular expression match for predefined multibyte string

mb_ereg — Regular expression match with multibyte support

mb_eregi_replace — Replace regular expression with multibyte support ignoring case

mb_eregi — Regular expression match ignoring case with multibyte support

mb_get_info — 擷取 mbstring 的內部設定

mb_http_input — 檢測 HTTP 輸入字元編碼

mb_http_output — 設定/擷取 HTTP 輸出字元編碼

mb_internal_encoding — 設定/擷取內部字元編碼

mb_language — 設定/擷取當前的語言

mb_list_encodings — 返回所有支援編碼的數組

mb_output_handler — 在輸出緩衝中轉換字元編碼的回呼函數

mb_parse_str — 解析 GET/POST/COOKIE 資料並設定全域變數

mb_preferred_mime_name — 擷取 MIME 字串

mb_regex_encoding — Set/Get character encoding for multibyte regex

mb_regex_set_options — Set/Get the default options for mbregex functions

mb_send_mail — 發送編碼過的郵件

mb_split — 使用Regex分割多位元組字串

mb_strcut — 擷取字元的一部分

mb_strimwidth — 擷取按指定寬度截斷的字串

mb_stripos — 大小寫不敏感地尋找字串在另一個字串中首次出現的位置

mb_stristr — 大小寫不敏感地尋找字串在另一個字串裡的首次出現

mb_strlen — 擷取字串的長度

mb_strpos — 尋找字串在另一個字串中首次出現的位置

mb_strrchr — 尋找指定字元在另一個字串中最後一次的出現

mb_strrichr — 大小寫不敏感地尋找指定字元在另一個字串中最後一次的出現

mb_strripos — 大小寫不敏感地在字串中尋找一個字串最後出現的位置

mb_strrpos — 尋找字串在一個字串中最後出現的位置

mb_strstr — 尋找字串在另一個字串裡的首次出現

mb_strtolower — 使字串小寫

mb_strtoupper — 使字串大寫

mb_strwidth — 返回字串的寬度

mb_substitute_character — 設定/擷取替代字元

mb_substr_count — 統計字串出現的次數

mb_substr — 擷取字串的部分

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.