UTF-8 biçiminde saklanan 120.000 satırlık bir MySQL tablom var. Birçok aksan içeren bir alan, ürün adı var. Aynı ada sahip bir ikinci alanı bir URL-dostu forma (ASCII) dönüştürdükten sonra doldurmam gerekiyor. PHP doğrudan UTF-8 işlemek olmadığındaniconv akıllı tırnaklarla "Yasadışı Karakter" verir - onlardan nasıl kurtulur?
, ben kullanıyorum:
$value = iconv ('UTF-8', 'ISO-8859-1', $value);
büyük strstr deyimi ardından ISO-8859-1 Bir adı, dönüştürmek için herhangi bir aksanlı karakter yerine onun unaccented eşdeğeri (à, örneğin, bir) olur.
Ancak orijinal metin isimleri Akıllı tırnaklar girildi ve biri karşı karşıya kalındığında iconv bobinleri - alıyorum:
Unknown error type: [8] iconv() [function.iconv]: Detected an illegal character in input string
iconv kullanmadan önce akıllı tırnaklar kurtulmak için, ben denedim gibi üç ifadelerini kullanarak:
$value = str_replace('’', "'", $value);
(€ ™ UTF-8 akıllı tek alıntının ham değeridir â) metin dosyası çok uzun olduğundan, inci bu str_replace en nedenidir e script her zaman için zaman aşımına uğradı.
önce iconv çalışan bir UTF-8 dizesinden Akıllı tırnak (veya geçersiz karakterler), atmak için en hızlı yolu nedir? Ya da, bütün bu sorun için daha kolay bir çözüm var mıdır?
Bir ismin, UTF-8'de, çok sayıda aksanla, ASCII'de doğru olarak yazılmayan, doğru olmayan bir isme dönüştürülmesinin en hızlı yolu nedir? "Link-friendly" ile ne demek istiyorsun?
iconv() 's // TRANSLIT özelliğini denediniz mi? Vurgulu karakterleri okunabilir ASCII eşdeğerlerine dönüştürmelidir. – ceejayoz
Belgelere bakıyorum ama nasıl yardımcı olacağını görmüyorum - eğer iconv() zaten akıllı bir alıntı yaparsa, // TRANSLIT kullanırsam hala boğulmaz mı? –
Bu, "kitlesel strstr deyiminiz" için daha fazla - bu yüzden bir cevap yerine yorum yaptım. – ceejayoz