2010-04-28 50 views
2

mb_strlen只給出字節數,不是我想要的。如何獲取PHP中的字符數?

它應該使用多字節字符。

+0

http://docs.php.net/manual/en/function.mb-strlen.php – SilentGhost 2010-04-28 10:09:34

+0

'mb_substr'給你一個給定的多字節字符串的一個子 - 這有什麼好做的字符串的長度。像其他人所建議的那樣使用'mb_strlen'。 – 2010-04-28 10:13:02

回答

11

mb_strlen也許?

+0

不,這是錯誤的... – openid 2010-04-28 10:13:32

+2

這是正確的,也許PHP不會將您的字符串識別爲多字節字符串?嘗試如下所示:mb_strlen($ your_multibyte_string,$ encoding)其中編碼應該是類似於「UTF-8」或「UTF-16」的文件 – jigfox 2010-04-28 10:31:21

+0

如何使用mb_strlen以及您正在測試的字符串使用什麼編碼? – Arkh 2010-04-28 11:18:17

0

mb_strlen字符串爲,測量長度爲

<?php 
$str = 'abcdef'; 
echo strlen($str); // 6 

$str = ' ab cd '; 
echo strlen($str); // 7 
?> 

直接從文檔中找到。

0

如果您使用UTF-8編碼步驟通過字符串中的所有字節並計算未設置第8位的字符。

此解決方案不需要mb擴展名。

6

mb_strlen()mb_internal_encoding('UTF-8')

9
mb_strlen($text, "UTF-8"); 
0

的strlen():返回的字節數,而比字符串中的字符數量多。

$name = "Perú"; // With accent mark 
echo strlen($name); // Display 5, because "ú" require 2 bytes. 

$name = "Peru"; // Without accent mark 
echo strlen($name); // Display 4 

mb_strlen():返回一個具有字符串的字符編碼的字符數。多字節字符被計數爲1。

$name = "Perú"; // With accent mark 
echo mb_strlen($name); // Display 4, because "ú" is counted as 1. 

$name = "Peru"; // Without accent mark 
echo mb_strlen($name); // Display 4 

iconv_strlen():返回字符串的字符計數,爲整數。

$name = "Perú"; // With accent mark 
echo iconv_strlen($name); // Display 4. 

$name = "Peru"; // Without accent mark 
echo iconv_strlen($name); // Display 4 
相關問題