print_r(strlen(trim(' ')));
Sonuç 9'dur
Ayrıca güvenilir
preg_replace('/[\n\r\t\s]/', '', ' ')
ancak sonuç sıfır değildir.
Please download my code and you will get the result
mb_language('uni');
mb_internal_encoding('UTF-8');
$s = ' ';
if (strlen(preg_replace('/\s+/u','',$s)) == 0) {
echo "String is empty.\n";
}
Bu işe yaramazsa ben bu yapıyor öneririz
$s = ' ';
if (strlen(trim(preg_replace('/\xc2\xa0/',' ',$s))) == 0) {
echo "String is empty.\n";
}
Bu çözümler, farklı platformlarda test edilmiştir.
U flag bir Çokbaytlı dize olarak dize tedavi etmek için) (preg_replace söyler, yani utf-8
Karakter bölünemez boşluk C2A0 ve alt 0160 ile oluşturulabilir.
Belki sonuçlarını karıştırıyor başka bir şey yapıyorsun? Test döner yapmak 0
print_r(strlen(trim(' ')));
Ve bu trim beklenen davranış.
This function returns a string with whitespace stripped from the beginning and end of str . Without the second parameter, trim() will strip these characters:
- "" (ASCII 32 (0x20)), sıradan bir alan.
- "\ T" (ASCII 9 (0x09)), bir sekme.
- "\ N" (ASCII 10 (0x0A)), yeni bir satır (satır besleme).
- "\ R" (ASCII 13 (0x0D)), bir satırbaşı.
- "\ 0" (ASCII 0 (0x00)), NUL bayt.
- "\ X0B" (ASCII 11 (0x0B)), dikey sekme.
UPDATE:
Lütfen ekli koduna bakarak i 2 uzaylar arasında bir karakter fazladan fark ettim.
Bu hexdump -C çıkışı olan
$ hexdump -C space.php
00000000 3c 3f 0d 0a 70 72 69 6e 74 5f 72 28 73 74 72 6c |<?..print_r(strl|
00000010 65 6e 28 74 72 69 6d 28 27 20 c2 a0 20 27 29 29 |en(trim(' .. '))|
00000020 29 3b 0d 0a 3f 3e |);..?>|
00000026
Ve bu dosyada sadece bir karakter ile, od çıkışıdır.
$ od space.php
0000000 120302
0000002
iyi, bir boşluk değil .. çünkü Döşeme, o boşluğu silmez. This is a good reference sıradışı karakterleri noktaya nasıl.
Dedi Peter gibi Oh, ve güncellenmiş soruyu cevaplamak için, sadece empty kullanın.
Ben hızlı yolu (ltrim
a> başka karakterler varsa hızlı başarısız olur) ve boş bir dizeye sonucu karşılaştırmak lider boşluk kırpmak olduğunu düşünüyorum:
# Check if string consists of only spaces
if (ltrim($string, ' ') === '') {
Peki this ...
$str = preg_replace('/\s\s+/', '', $str);
Ya da bu ...
$str = str_replace(array("\n", "\r", "\t", " ", "\o", "\xOB"), '', $str);