PHP對HTML編碼字串的處理

2021-04-13 14:08:29 字數 1990 閱讀 4857

今天在寫乙個php指令碼訪問資料庫時,發現其中的中文字串使用了html編碼方式進行儲存的(比如中文字「毛」對應的html編碼為「毛」),使得在對該字段進行條件查詢時不能進接使用中文進行查詢,而要將其轉換為編碼後再進行條件匹配。

php中對可讀性字元與html編碼字元相互轉換時需要使用到htmlentitieshtml_entity_decode函式。於是寫出如下查詢語句,

並執行。可是怪是卻發生了,此語句在sql analyzer中可以正確執行並查詢出結果,而在ie中很執行這段指令碼卻提示查詢結果為零,這是為什麼呢?

經過仔細檢查這段sql,並檢視在ie中的原始碼,發現了問題的根結所在。查詢值經htmlentities函式後轉換為html編碼,此編碼中存在著特殊字元&(如第一段中的舉例),在ie中這個字元是另有含義的。在ie中一般都是使用「&」來表示這個符號的,導致在ie中看到輸出的sql語句和真正執行的語句是不一樣的。

要解決這個問題就要想個辦法不讓ie使用「&」表示「&」符號。經過一翻查詢,發現使用如下**可以解決這個問題。

<?

php$trans

=get_html_translation_table

(html_entities);

$trans

=array_flip

($trans

);$encoded="

hallo &  & krämer";

$original

=strtr

($encoded

,$trans

);echo

$original

;?>

執行這段**,輸出的$original變數值為「hallo & & krämer」,這正是我想要的結果。

以上是我在工作中遇到的問題及解決方法,特將其寫在我的blog上,與那些遇到和我相似問題的朋友們一起分享。

PHP對HTML編碼字串的處理

今天在寫乙個php指令碼訪問資料庫時,發現其中的中文字串使用了html編碼方式進行儲存的 比如中文字 毛 對應的html編碼為 毛 使得在對該字段進行條件查詢時不能進接使用中文進行查詢,而要將其轉換為編碼後再進行條件匹配。php中對可讀性字元與html編碼字元相互轉換時需要使用到htmlentiti...

PHP對HTML編碼字串的處理

今天在寫乙個php指令碼訪問資料庫時,發現其中的中文字串使用了html編碼方式進行儲存的 比如中文字 毛 對應的html編碼為 毛 使得在對該字段進行條件查詢時不能進接使用中文進行查詢,而要將其轉換為編碼後再進行條件匹配。php中對可讀性字元與html編碼字元相互轉換時需要使用到htmlentiti...

openjudge 編碼字串

總時間限制 1000ms 記憶體限制 65536kb 描述在資料壓縮中,乙個常用的方法是行程長度編碼壓縮。對於乙個待壓縮的字串,我們可以依次記錄每個字元及重複的次數。例如,待壓縮的字串為 aaabbbbcbb 壓縮結果為 a,3 b,4 c,1 b,2 這種壓縮對於相鄰資料重複較多的情況有效,如果重...