簡體   English   中英

使用PHP的str_replace函數替換UTF-16編碼的字符串中的低ASCII字符

[英]Replacing low ASCII characters in UTF-16-encoded string using PHP's str_replace function

我有一些用於文本過濾的PHP代碼。 在過濾過程中,一些ASCII字符(例如與號(&)和代字號(〜))被臨時轉換為低ASCII字符(例如十進制代碼點4和5)。 在生成最終的過濾輸出之前,將還原轉換。

$temp = str_replace(array('&', '~'), array("\x04", "\x05"), $input);
... some filtering code to work with $temp ...
$out = str_replace(array("\x04", "\x05"), array('&', '~'), $temp);

這對於使用8位代碼單元(例如UTF-8和ISO 8859-1)的字符編碼的輸入文本效果很好。 但是我不確定以更大的代碼單元(例如UTF-16或UTF-32)編碼的輸入。 第一步轉換會破壞輸入文本的格式嗎? 由於某些先前存在的輸入字符,在還原步驟期間是否會有一些沖突? PHP安裝程序不會重載多字節字符串函數。

誰能評論? 謝謝。

只要傳遞給它的所有字符串都使用相同的編碼,str_replace即可正常工作。 它只是對數據進行二進制比較/替換,因此實際編碼並不重要。

這就是為什么此列表中沒有mb_str_replace的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM