2011-12-19 12 views
12

explode() fonksiyon mb_split() yılında correlating baytlı güvenli bir işlevi vardır.PHP: çok baytlı dizeler için implode() işlevi güvenli midir?

Ben implode() için ilişkilendirilerek işlevini görmüyorum. Bu, çok baytlı dizeler için implonun zaten güvenli olduğunu ima eder mi?

+0

Bir baytlı güvenli olması gerekir neden anlamakta zorluk yaşıyorum() 'ilk etapta - bir dizgiyi ayırmak varsayılan olarak multi-byte'tır, değil mi? Ama bu farklı bir soru. –

+0

PHP saklar ham ikili bayt dizileri gibi tüm dizeleri (AFAIK), sürece bölünmüş token doğru ikili gösterimini geçerken, hem de çok baytlı dizeleri ile ') (patlayabilir' kullanmak mümkün olmalıdır teoride yüzden. Aynı şey bu nedenle 'implode() 'için de geçerlidir - birleştirme sınırlayıcısı olarak geçirilen ikili dizi tam anlamıyla kullanılacaktır, böylece sınırlayıcınız doğru bir şekilde saklandığı sürece sorun olmaz. – DaveRandom

+1

@DaveRandom: Çok baytlı bir karakterin iki tek baytlık karakter gibi görünmesi mümkün değil mi? Bu tek baytlık karakterlerden biri sınırlayıcı olduğunda, çok baytlı bir karakterin istemeden kesilmesiyle sonuçlanamaz mıdır? –

cevap

6

Sürece sınırlayıcı ve dizideki dizeleri sadece iyi biçimli çokbaytlı içerdiklerinden herhangi bir sorun olmamalıdır dizileri.

implode temelde süslü bir birleştirme operatörü ve ben birleştirme baytlı güvenli olmayan bir senaryo hayal olamazdı; `bölünmüş)

+2

Bu bağlamda "iyi biçimlenmiş çokbaytlı sekans" ile ne demek istediğinden tam olarak emin değilim? (Gerisini katılıyorum, yine de) –

+0

Teşekkürler. Bir sınırlayıcı olarak boşluk kullanıyorum: 'mb_split ('', $ mbstring)'. Bu, iyi oluşturulmuş bir multibyte dizisi oluşturur mu? –

+0

@danielfaraday, komut dosyanızın dizenin kullandığı çok baytlı karakter kümesinde saklanmasına bağlıdır. Eğer değilse, o zaman hayır. – DaveRandom

İlgili konular