搜尋
首頁後端開發php教程php多位元組字串

php多位元組字串

Nov 21, 2016 pm 05:58 PM
phpphp字串

簡介

雖然許多語言每個必要字符都能一對一映射到8 比特(bit)的值,但也有好幾種語言需要非常多的字符來書面通訊,以至於它們的編碼範圍不能僅僅包含在一個位元組裡(一個位元組Byte 由8 個位元組 構成。每一位元只能包含兩種不同的值: 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(&#39;SJIS&#39;);
    // 开始缓冲并指定 "mb_output_handler" 为回调函数
    ob_start(&#39;mb_output_handler&#39;);
?>

多位元組字串函數

mb_check_encoding — 檢查字串在指定的字串函數

mb_check_encoding — 檢查字串在指定的符號寫入轉換

mb_convert_encoding — 轉換字元的編碼

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

_con

mb_decode_mimeheader — 解碼MIME 頭字段中的字串

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

mb_detect_encoding d_mgg; mimeheader — 為MIME 頭編碼字串

mb_encode_numericentity — Encode character to HTML numeric string reference

mb_encoding_aliases — Get aliases of a known encoding type

_natcha_strwm 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 supularsearch expression matcha​​anatfig; 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 matchm peridperionat fat面莜<;

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 mb_ 1string 的內部編碼_output — 設定/取得HTTP 輸出字元編碼

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

mb_language — 設定/取得目前的語言

mb_list_encodings — 傳回所有支援編碼的陣列

_pun_list_encodings — 傳回所有支援編碼的數位化

_p_mb_out / POST/COOKIE 資料並設定全域變數

mb_preferred_mime_name — 取得MIME 字串

mb_regex_encoding — Set/Get character encoding for multibyte regextion版本tion the function s s

mb_send_mail — 發送編碼過的郵件

mb_split — 使用正規表示式分割多位元組字串

mb_strcut — 取得字元的部份

mb_strimwidth — 取得依指定寬度截斷的串中首次出現的位置

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

mb_strlen — 取得字串的長度

mb_strpos — 尋找字串在另一個字串中首次找到字串的長度

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

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

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

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

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

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

mb_strtolower _str字串小寫

mb_strtoupper — 讓字串大寫

mb_strwidth — 傳回字串的寬度

mb_substitute_character — 設定/取得

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
使用數據庫存儲會話的優點是什麼?使用數據庫存儲會話的優點是什麼?Apr 24, 2025 am 12:16 AM

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

您如何在PHP中實現自定義會話處理?您如何在PHP中實現自定義會話處理?Apr 24, 2025 am 12:16 AM

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

什麼是會話ID?什麼是會話ID?Apr 24, 2025 am 12:13 AM

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

您如何在無狀態環境(例如API)中處理會議?您如何在無狀態環境(例如API)中處理會議?Apr 24, 2025 am 12:12 AM

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

您如何防止與會議有關的跨站點腳本(XSS)攻擊?您如何防止與會議有關的跨站點腳本(XSS)攻擊?Apr 23, 2025 am 12:16 AM

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

您如何優化PHP會話性能?您如何優化PHP會話性能?Apr 23, 2025 am 12:13 AM

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

什麼是session.gc_maxlifetime配置設置?什麼是session.gc_maxlifetime配置設置?Apr 23, 2025 am 12:10 AM

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

您如何在PHP中配置會話名?您如何在PHP中配置會話名?Apr 23, 2025 am 12:08 AM

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具