2010-08-18 25 views
9

dosyasından dosya alma "php" dosyasındaki "filesize" dosyasını nasıl alabilirim?Bir String

Dizeyi mysql veritabanına blob olarak koydum ve bloğun boyutunu depolamam gerekiyor. Çözümüm geçici bir dosya oluşturmak ve dizeyi geçici dosyaya koymaktı. şimdi dosyaları "string" den alabiliyorum. depoladığınız tüm ardından boyut charset bayt sayısı dize kez uzunluğu olmalıdır, dize ise ancak çözüm ...

selam

cevap

40

döndürür. mbstring function overloading etkinleştirilmişse, çalışacak tek çağrı mb_strlen($string, '8bit'); olacaktır. Etkin değilse, strlen($string) da iyi çalışır.

Yani, böyle hem davalarını görebileceğini:

if (function_exists('mb_strlen')) { 
    $size = mb_strlen($string, '8bit'); 
} else { 
    $size = strlen($string); 
} 
+0

doğru cevabıdır teşekkür ederim! işe yarıyor! – poldixd

+1

+1 Bu doğru cevap –

+0

Reddetmeyi açıklamak ister misiniz? Bu cevapta neyin yanlış ya da eksik olduğu? – ircmaxell

0

iyi değil. Yani Unicode için 2 * strlen ($ string) olacaktır.

+0

AFAIK sadece özel karakter çift boyutu var. Yani 'a' harfi bir bayt olacak, ancak ó, ł, ż, ć, ś gibi harfler 2-bayt uzunluğunda olacak –

+0

Oh, bunu bilmiyordum. Şerefe. –

+0

Yup, UTF-8 değişken genişlikli bir kodlamadır, karakterler 1 ile 4 bayt arasında olabilir. http://en.wikipedia.org/wiki/UTF-8 –

-3

mb_strlen() numarasını kullanarak, bu dizgenin boyutunu (varsa), bayt cinsinden almak için kullandığını söyleyebilirsiniz.

+0

İkinci düşünce, üzgünüm, ama bu tamamen yanlıştır. 'mb_strlen()' çoklu baytlı kodlama ile birlikte dizgenin boyutunu * karakter *, bayt cinsinden döndürmek için tasarlanmıştır. -1 –

+0

Sadece bir şeyleri okumaktan ziyade (gelecekte daha fazlasını yapmak için akılda bir not yapacağım) daha fazla araştırmadan sonra, ikinci parametreyi atlayarak ya da ikinci parametreyi ayarlayarak istenen sonucu elde etmek için mb_strlen() öğesini kullanabilirsiniz. 8bit olmak. – gabe3886

+0

@gabe yup, bu bile * ircmaxell'in cevabına göre (sadece bunun farkında değildim) * sadece * kurşun geçirmez yoldur. –

1
strlen() 

veya SQL mysql sokmadan önce: boy karakter kümesine bağlı olarak çeşitli olabilir

LENGTH() 

dikkat edin. Eğer karakter sayısı kullanım Yukarý (sahip olmak istiyorsanız

+0

strlen() hatalı olabilir, bkz. @ Ircmaxell yanıtı –

6
FROM tablo

SEÇ uzunluğu (alan)

(örneğin utf-8 kodlamasını varsa))) bayt strlen (kullanmak gerçek uzunluğa sahip olmak istiyorsanız MySQL docs itibaren

:

uZUNLUĞU (str)

bayt cinsinden ölçülür string str uzunluğunu, döndürür. Çok baytlı bir karakteri, birden çok bayt olarak sayılır. Bu, beş, iki bayt karakter içeren bir dizi için, UZUNLUĞU() CHAR_LENGTH ise, 10 döndürür anlamına gelmektedir() O bağlıdır 5.

+0

+1 bu mySQL end –

İlgili konular