使用的第五个参数file_get_contents
:
$s = file_get_contents('file', false, null, 0, 200);
不幸的是,这仅适用于256个字符集,并且不适用于多字节字符,因为PHP 不提供本机Unicode支持。
统一码为了读取特定数量的Unicode字符,您将需要使用诸如intl和mbstring之类的PHP扩展来实现自己的功能。例如,fread
可以按以下方式实现接受最大数量的UTF-8字符的版本:
function utf8_fread($handle, $length = null) { if ($length > 0) { $string = fread($handle, $length * 4); return $string ? mb_substr($string, 0, $length) : false; } return fread($handle); }
如果$length
为正,则该函数读取该数目的字符的UTF-8字符串可以占用的最大字节数(UTF-8字符表示为1至4个8位字节),并提取第一个$length
多字节字符使用mb_substr
。否则,该函数将读取整个文件。
的UTF-8版本file_get_contents
可以类似的方式实现:
function utf8_file_get_contents(...$args) { if (!empty($args[4])) { $maxlen = $args[4]; $args[4] *= 4; $string = call_user_func_array('file_get_contents', $args); return $string ? mb_substr($string, 0, $maxlen) : false; } return call_user_func_array('file_get_contents', $args); }