2012-12-06 335 views
-1

我現在有問題。當某人訂購包含字符「æ」的東西時,它將變成「à|」,這會破壞mysql查詢,並在那裏結束句子。舉一個例子,我得到這樣的:替換特殊字符php

#55*2*195*1 - 1,%%%%38. Burger dobbelt %%%%Kommentar%%%%Burgeren skal và¦re med friske agurker i stedet for syltede%%%%og uden ost. Pॠforhà¥nd tak %%%%%%%%100. Lasagne %%%%Dressing%%%%Ingen dressing,*;;124.20;;Niklas Smietana;;;;7;;*# 

但是,當它插入到數據庫中,它最終被這樣的:

#55*2*195*1 - 1,%%%%38. Burger dobbelt %%%%Kommentar%%%%Burgeren skal v 

它只是到此爲止。 所以我想要做的是我想在「字符串」中替換「æ」,「ø」,「å」,「ü」,「ö」等所有特殊字符,因此它變成了「 ae「,」oe「,」aa「,」u「,」o「。 我已經嘗試過str_replace,但它不會這樣做。

我的代碼:

$product_name = $row['product_names']; 
$product_name = str_replace("ø", "oe", $product_name); 
$product_name = str_replace("É", "É", $product_name); 
$product_name = str_replace("Ã", "à", $product_name); 
$product_name = str_replace("¿", 'oe', $product_name); 
$product_name = str_replace("¾", 'ae', $product_name); 
$product_name = str_replace("æ", 'ae', $product_name); 
$product_name = str_replace("Œ", 'aa', $product_name); 
$product_name = str_replace("å", 'ae', $product_name); 
$product_name = str_replace("š", 'oe', $product_name); 
$product_name = str_replace("Ÿ", 'u', $product_name); 

不要任何人在這裏有一個解決方案嗎?

在此先感謝。

+0

什麼是你的文件的字符集和數據庫中的排序規則? –

+1

請參閱[UTF-8所有方式](http://stackoverflow.com/q/279170) –

回答

0

您應該使用mysql_real_escape_string()mysqli_real_escape_string()來防止mysql注入並轉義特殊字符。

+0

請您舉一個例子,因爲當我嘗試時: $ product_name = utf8_encode($ product_name); 它只是將行編輯爲: #55 * 2 * 195 * 1 - 1,%%%% 38。 Burger dobbelt %%%% Kommentar %%%% Burgeren skalvÃÂ|remed friske agurker i stedet for syltede %%%% og uden ost。 PÂ¥forhÃ¥nd tak %%%%%%%% 100。 Lasagne %%%% Dressing %%%% Ingen dressing,* ;; 124.20 ;; Niklas Smietana ;;;; 7 ;; *# – Ismail

+0

@IsmailIsmaiil我編輯了我的帖子並刪除了我寫的utf8_encode答案。 –