[英]strlen and non latin characters in for loop
我有一個HTML表單,使用post發送索索索
到我的PHP文件。
我嘗試了strlen,但它給了我24而不是3(?!)......然后這打破了我的for循環:
$in=$_POST['inn'];
$length=strlen($in)
for ($i=0; $i<$length; $i++) {
$cleanchar=$in[$i];
}
我希望cleanchar作為一個單獨的角色,就好像只有一個角色通過POST發送一樣。
如何使用PHP分隔每個字符?
嘗試使用mb_strlen
進行多字節字符操作:
echo mb_strlen('索索索', 'utf-8'); // or omit second parameter or change to your encoding
來自文檔:
返回具有字符編碼編碼的字符串str中的字符數。 多字節字符計為1。
你的表格不發送三個字符,它發送三個序列〹(其中12345是這些符號的字符代碼 - 我不知道它實際是什么)。
這是八個字符,乘以三個符號,字符串長度為24。
如果你要運行echo htmlspecialchars($_POST['inn']);
你可以清楚地看到這種效果。
我很確定有辦法解決這個問題......我認為你需要確保文檔字符集是UTF-8: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你的<head>
部分的<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
。
即便如此,根據這些符號的字節長度,您將獲得6
或9
的長度,因為這是strlen
測量的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.