Değerleri veritabanına eklemeden önce yazdırılmamış denetim karakterlerini kullanıcı girdisinden çıkarmak için şu regex kullanıyorum.Baskı öncesi karakterleri çıkarmak için preg_replace tüm yabancı karakterleri de siliyor gibi görünüyor
preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $value)
Bunu utf-8 dizelerinde kullanmakta bir sorun var mı? Tüm ascii olmayan karakterleri tamamen ortadan kaldırıyor gibi görünüyor.
Geçerli bir karakter, (örneğin, ąęćśńżź gibi) Polonyalı diactric karakterleri gibi ASCII aralığının dışında kalacak mı? Geçersiz UTF-8 sekanslarını kesecek düzenli bir ifadeyi arıyorum (bu yüzden MySQL böyle bir dizeyi veritabanına eklerken şikayet etmeyecektir), ancak her şeyi el değmemiş halde bırakın. – pako
Bunun için '/ \ P {Any}/u'' kullanmak istediğinizi düşünüyorum -' Any 'kendini açıklayıcı olmalı ve '\ P {}' (büyük harf)' \ p {} '. Ama daha önce geçersiz bayt dizilerinin oraya nasıl girdiğiyle daha çok ilgilenirim. –