2011-08-24 61 views
0

我从utf8编码的数据库中获取数据。但不知怎的,一些旧数据包含latin1字符。检测utf8字符串中的latin1字符

所以这

$encod = mb_detect_encoding($string, 'UTF-8', true); 

永远是正确的。

总是使用utf8_decode()来检查latin1字符(如'äöß')是否安全?

$string = utf8_decode($string); 
$search = Array(" ", "ä", "ö", "ü", "ß", "."); //,"/Ä/","/Ö/","/Ü/"); 
$replace = Array("-", "ae", "oe", "ue", "ss", "-"); //,"Ae","Oe","Ue"); 
$string = str_replace($search, $replace, strtolower($string)); 

问候

+1

怎么样'mb_detect_encoding($字符串,“ISO-8859-1,UTF -8',true);'? – ajreal

+0

@ajreal我从数据库中得到的字符串是'äääää'''code' mb_detect_encoding($ this - > _ name,'ISO-8859-1,UTF-8',true);'代码'说'ISO-8859-1'和utf8_decode($ string)给出'ääää',我该怎么办? – spankmaster79

+1

尝试搜索iconv,MB转换通过PHP手册/ SO,应该有几个问题在这里讨论之前 – ajreal

回答

-1

似乎不上班utf8_encoding

<?php 
    $string = "äöüß"; 
    $search = Array(" ", "ä", "ö", "ü", "ß", "."); //,"/Ä/","/Ö/","/Ü/"); 
    $replace = Array("-", "ae", "oe", "ue", "ss", "-"); //,"Ae","Oe","Ue"); 
    $string = str_replace($search, $replace, strtolower($string)); 
    echo $string; 
?> 

DEMO:http://codepad.org/HGTyHkBU

+1

不知道'-1'是什么意思,但感谢^ _^ – Neal

+0

不是从我;-),但也不是一个很好的答案,因为你放入$ string的字符串取决于你保存的文件的字符编码代码。我的数据来自datbase并且是utf8编码,但包含latin1字符,如'äääää',它是utf8_decoded =äääää – spankmaster79