如何使用PHP从文本文件中获取x个字符?

时间:2017-01-20 12:01:05

标签: php string text file-get-contents substr

我试图从外部文本文件中获取大约200个字母/字符(包括空格)。我已经获得了显示文本的代码,我将包含该文字,但是为了得到某些我不知道的信件。再一次,我不是在谈论行,而是我的意思。

<?php
    $file = "Nieuws/NieuwsTest.txt";
    echo file_get_contents($file) . '<br /><br />';
?>

3 个答案:

答案 0 :(得分:5)

使用file_get_contents的第五个参数:

$s = file_get_contents('file', false, null, 0, 200);

这只适用于256个字符集,并且可以正常使用多字节字符,因为PHP does not offer native Unicode support很遗憾。

的Unicode

为了读取特定数量的 Unicode 字符,您需要使用intlmbstring等PHP扩展来实现自己的函数。例如,接受最大UTF-8字符数的fread版本可以实现如下:

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多字节字符。否则,该函数将读取整个文件。

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);
}

答案 1 :(得分:1)

你应该使用substr()函数。

但我建议你使用multy byte safe mb_substr()

    $text = mb_substr( file_get_contents($file), 200 ) . '<br /><br />';

对于substr,如果有一些重音等,你会遇到麻烦。使用mb_substr()

不会发生问题

答案 2 :(得分:-1)

使用它:

<?php
    $file = "Nieuws/NieuwsTest.txt";
    echo substr( file_get_contents($file), 0, 200 ) . '<br /><br />';
?>