如何使用 php 从文本文件中获取 x 个字符?
How to get x amount of characters from text file using php?
我正在尝试从外部文本文件中获取大约 200 letters/chars(包括空格)。我有显示文本的代码,但我不知道要获取某些字母。再说一次,我不是在谈论线条,我的意思是字母。
<?php
$file = "Nieuws/NieuwsTest.txt";
echo file_get_contents($file) . '<br /><br />';
?>
使用这个:
<?php
$file = "Nieuws/NieuwsTest.txt";
echo substr( file_get_contents($file), 0, 200 ) . '<br /><br />';
?>
你应该使用 substr() 函数。
但我建议你使用多字节安全mb_substr()。
$text = mb_substr( file_get_contents($file), 200 ) . '<br /><br />';
使用 substr,如果有一些重音等,你会遇到麻烦。这些问题不会发生 mb_substr()
使用file_get_contents
的第五个参数:
$s = file_get_contents('file', false, null, 0, 200);
这仅适用于 256 个字符集,不能 正确使用 multi-byte 个字符,因为 PHP does not offer native Unicode support,不幸的是。
Unicode
为了读取特定数量的 Unicode 字符,您需要使用 PHP 扩展来实现您自己的功能,例如 intl and mbstring. For example, a version of 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位字节),并使用 mb_substr
提取前 $length
multi-byte 个字符。否则,函数读取整个文件。
file_get_contents
的 UTF-8 版本可以类似的方式实现:
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);
}
我正在尝试从外部文本文件中获取大约 200 letters/chars(包括空格)。我有显示文本的代码,但我不知道要获取某些字母。再说一次,我不是在谈论线条,我的意思是字母。
<?php
$file = "Nieuws/NieuwsTest.txt";
echo file_get_contents($file) . '<br /><br />';
?>
使用这个:
<?php
$file = "Nieuws/NieuwsTest.txt";
echo substr( file_get_contents($file), 0, 200 ) . '<br /><br />';
?>
你应该使用 substr() 函数。
但我建议你使用多字节安全mb_substr()。
$text = mb_substr( file_get_contents($file), 200 ) . '<br /><br />';
使用 substr,如果有一些重音等,你会遇到麻烦。这些问题不会发生 mb_substr()
使用file_get_contents
的第五个参数:
$s = file_get_contents('file', false, null, 0, 200);
这仅适用于 256 个字符集,不能 正确使用 multi-byte 个字符,因为 PHP does not offer native Unicode support,不幸的是。
Unicode
为了读取特定数量的 Unicode 字符,您需要使用 PHP 扩展来实现您自己的功能,例如 intl and mbstring. For example, a version of 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位字节),并使用 mb_substr
提取前 $length
multi-byte 个字符。否则,函数读取整个文件。
file_get_contents
的 UTF-8 版本可以类似的方式实现:
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);
}