簡體   English   中英

如何使用php從文本文件中獲取x個字符?

[英]How to get x amount of characters from text file using php?

我正在嘗試從外部文本文件中獲取大約200個字母/字符(包括空格)。 我有代碼來顯示要包含的文本,但是要獲得某些字母我不知道。 我再一次不是在說線,我的意思是字母。

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

使用file_get_contents的第五個參數:

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

不幸的是,這僅適用於256個字符集,並且不適用於多字節字符,因為PHP 不提供本機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位字節),並提取第一個$lengthmb_substr多字節字符。 否則,該函數將讀取整個文件。

可以通過類似的方式實現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);
}

您應該使用substr()函數。

但我建議您使用多字節安全mb_substr()

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

使用substr時,如果有一些重音等,您會遇到麻煩。mb_substr()不會發生這些問題

用這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM