Web Form Girifl'ten Temizleme PHP Dize

3 Cevap php

Ben müşteri bilgilerini almak bir web formu var. Formu çok () çalışmaz filter_input PHP 5.1.6 kullanılarak işlenir.

Form bazı diğer standart alanları ile birlikte bir metin alanı vardır. Ben MySQL veritabanında saklanır ediliyor garip biçimlendirme kodları çok alıyorum. Onlar dizeden biçimlendirmeyi goz nerede nasıl bu sonuçlar filtre edebilirsiniz?

Before
Where is the babyâ??s room? I think itâ??s in the north side of the house. Do you know where it is?

After (this is what I would like to see)
Where is the baby's room? I think it's in the north side of the house. Do you know where it is?

3 Cevap

Bu neredeyse kesin bir uyumsuzdur karakter kümesinden dolayı birisiyle kesme-ve-yapıştırma olduğunu.

En iyimser tahminle, tırnak ve yerine normal dostu ASCII olanlardan daha konuşma işaretleri, için ASCII olmayan unicode semboller kullanan Microsoft Word bunu yapıyoruz. UTF-8 80-FF iki veya daha fazla bir dizi bayt olarak kodlar, ancak sık sık web sayfalarını genellikle aksan AZ, bireysel karakterler olarak bu bayt davranır ki "latin-1" olarak ayarlanır. Eğer birini beklediğiniz 2 veya 3 karakterleri görebilir ve bunlardan bazıları almost her zaman veri utf-8 olduğu anlamına gelir ama o kadar şey tarafından işlenen ediliyor, desenli garip latin semboller ise latin- 1..

Bu utf-8 ve sistemin ilk etapta expected latin-1 olarak yazdığınız zaman istisna değildir. HTML Form açıkça bir karakter türünü ayarlar emin olun.

Genel olarak, ben tüm web-tabanlı araçları değil, bir lanet iyi bir neden olmadan "utf-8" kullanımı yapmak öneriyoruz.

Update: Bu biraz iğrenç, ama ben çok fazla charset veritabanı hakkında endişelenmeyin öneririz. Gerçekten biz sadece utf-8 varsayılan gerektiğini, ancak bir latin-1 tabloya utf-8 veri koyarsanız, ne geri geliyor hala çok uzun hiçbir şey onun size gönderiyor ne düşünüyor veritabanını sorar gibi, utf-8 olacak. Ne söylüyorum bu soruna neden MySQL ile olası olmasıdır. Bu db okuma ve HTML işlemek için kes-yapıştır, tarayıcı, web form, form okuma ve db yazmak için kod, ya da oldukça mümkün, kod ya bulunuyor.

Iffy karakter ile sayfanın karakter kodlamasını kontrol etmeyi deneyin Lütfen utf-8 için ayarlama veya tarayıcıda utf-8 zorlayarak sahipsiniz. Görünüm-> firefox Karakter Kodlama.

Bunlar veritabanı utf8 dizeleri gönderme ve veritabanı muhtemelen latin bekliyor. Önce utf8 olarak ayarlanmış değilse tablo, utf8 ayarlanmış olduğundan emin olun. Sonra her şeyden önce bu sorguyu çalıştırmayı deneyin:

set names utf8

Bu utf8 bağlantının charset koyacaktır. Sonra diğer sorguları çalıştırabilirsiniz.

Ve bunu okuyun:

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

Yazınızı okuduktan sonra ben size söyleyebilirim tek şey form etiketi kontrol edin ve istediğiniz değere "kabul-charset" özniteliği eklemektir.

Bu formdan gönderilen verileri ile olan bir sorun olduğu zaman bunu kontrol etmek isteyebilirsiniz.

Eğer veritabanı tablosunda veri depolamak sonra bu sorunu varsa o zaman veritabanı tablo dize alfabe / chartsets'ten ile kontrol etmek isteyebilirsiniz.