Lia*_*ley 53 php string string-length
我正在为门户网站做一个房地产供稿,它告诉我一个字符串的最大长度应该是20,000字节(20kb),但我以前从未遇到过这个问题.
我该如何测量a的byte大小varchar string.所以我可以做一个while循环来修剪它.
Pho*_*ixS 65
您可以使用mb_strlen()来使用仅具有字节字符的编码来获取字节长度,而不必担心多字节或单字节字符串.例如,正如drake127在mb_strlen的评论中所说,你可以使用'8bit'编码:
<?php
$string = 'Cién cañones por banda';
echo mb_strlen($string, '8bit');
?>
Run Code Online (Sandbox Code Playgroud)
使用strlen函数可能会遇到问题,因为php可以选择重载strlen来实际调用mb_strlen.在http://php.net/manual/en/mbstring.overload.php中查看有关它的更多信息
要按字节长度修剪字符串而不在多字节字符的中间拆分,您可以使用:
mb_strcut(string $str, int $start [, int $length [, string $encoding ]] )
Run Code Online (Sandbox Code Playgroud)
Foo*_*Bah 30
你必须弄清楚字符串是ascii编码还是用多字节格式编码.
在前一种情况下,您可以使用strlen.
在后一种情况下,您需要找到每个字符的字节数.
strlen文档提供了如何执行此操作的示例:http://www.php.net/manual/en/function.strlen.php#72274
sou*_*rge 24
你的意思是字节大小或字符串长度?
字节大小用strlen(),而字符串长度用于查询mb_strlen().您可以使用substr()将字符串修剪为X 个字节(请注意,如果它具有多字节编码,则会破坏字符串 - 如注释中Darhazer所指出的那样)并mb_substr()在字符串的编码中将其修剪为X个字符.
小智 5
PHP的strlen()函数返回ASCII字符数。
strlen('borsc') -> 5(字节)
strlen('borš?') -> 7(字节)
$limit_in_kBytes = 20000;
$pointer = 0;
while(strlen($your_string) > (($pointer + 1) * $limit_in_kBytes)){
$str_to_handle = substr($your_string, ($pointer * $limit_in_kBytes ), $limit_in_kBytes);
// here you can handle (0 - n) parts of string
$pointer++;
}
$str_to_handle = substr($your_string, ($pointer * $limit_in_kBytes), $limit_in_kBytes);
// here you can handle last part of string
Run Code Online (Sandbox Code Playgroud)
..或您可以使用如下功能:
function parseStrToArr($string, $limit_in_kBytes){
$ret = array();
$pointer = 0;
while(strlen($string) > (($pointer + 1) * $limit_in_kBytes)){
$ret[] = substr($string, ($pointer * $limit_in_kBytes ), $limit_in_kBytes);
$pointer++;
}
$ret[] = substr($string, ($pointer * $limit_in_kBytes), $limit_in_kBytes);
return $ret;
}
$arr = parseStrToArr($your_string, $limit_in_kBytes = 20000);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93867 次 |
| 最近记录: |