Iphone çökmesine neden Emojis

2 Cevap php

Bizim iphone app kullanıcılar yorum gönderebilir bir sohbet odası bulunmaktadır. Kullanıcıların yorumlarına emojis ekleyerek, çünkü son zamanlarda, sohbet odası uygulaması çökmesini olmuştur. Ben A-z0-9 aralığında olmayan karakterler, bu çökmesini app / beslemeyi önlemek umuduyla (Ben de yaklaşık 30 noktalama işaretleri karakterler izin) izin vermez benim sunucu PHP script gitti. Ancak, emojis yine sohbet odası çarpıyor.

Bu özel karakterler ile yorumlarınıza izin vermiyor benim sunucu komut dosyası benim düzenli ifade filtre:

$special = "/\W/";
$special2 = "/[\~\!\@\#\$\%\^\&\*\(\)\_\+\`\-\=\{\}\|\:\\\"\<\>\?\,\.\/\;\'\[\]]/";

if ((preg_match($special,$comment)) && (!preg_match($special2,$comment)))

Yukarıdaki PHP ifadesi olduğunu söylüyor komut olmayan bir karakter bulursa [Az] [0-9] ve değil sonra Yorumu reddetmek için listelenen noktalama işaretleri biri.

Son zamanlarda app kırdı açıklama aşağıdadır:

<comment>Exciting times&icirc;€Žits all about the &icirc;&sect; go Team!!</comment>

Çökmesini app engellemek için ne herhangi bir öneriniz?

2 Cevap

Burada sorun çözüldü nasıl. Şimdi program / veritabanına takmadan önce Yorum kodlar çözer.

$comment = utf8_decode($comment); 
$comment = utf8_encode($comment);

Ben de dinamik xml / php beslemesine bir utf-8 başlığı eklendi:

header('Content-type: text/html; charset=utf-8');

Emojis ince olduğu, görüntü yok. Ama yem şimdi geçerli ve uygulaması çökmez. Sorun çözüldü.

Ben bir tahminde bulunmak olsaydı, ben burada oluyor bence budur. Şansını app düzgün unicode işlemez vardır. Orada devam edilebilir şeyler (karakter sayısı == bayt sayıları, vb varsayarak) herhangi bir sayı, ama size app gönderilen bazı unicode dizeleri olsun eğer çöker.

iPhone Empoji (U + E001-U + E05A de özel kod aralığı kısmını kullanarak) unicode olarak uygulanır. Eğer doğru filtre mümkün değildir nedeni "u" append sürece PHP Regexp motor dizenin sonuna kadar yüksek unicode aralıkları kullanarak gelen dizeleri ayrıştırmak yok olduğunu:

$special2 = "/[\~\!\@\#\$\%\^\&\*\(\)\_\+\`\-\=\{\}\|\:\\\"\<\>\?\,\.\/\;\'\[\]]/u";

O şeyler yapıyor kurulum tam olarak nasıl bağlı diğer istenmeyen sonuçlar doğurabilir ve bu doğru keyfi unicode dizeleri işleyebilir emin olmak için uzun vadede çok daha iyi olurdu.