2017-01-20 9 views
2

私は外部テキストファイルから約200文字/文字(スペースを含む)を取得しようとしています。私はテキストを表示するコードを持っていますが、それを含めることになりますが、特定の文字を取得するにはわかりません。もう一度私はラインの私が本当に手紙を意味しているわけではない。phpを使ってテキストファイルからx文字を取得するには?

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

はあなたがPHPで 'substr'機能を使用することができます。 –

+0

文字列の最初の200文字を取得したいですか? – Mohammad

答えて

4

file_get_contentsの5番目のパラメータを使用します

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

これは動作しますが残念なことにPHPのdoes not offer native Unicode supportは256文字セットであり、ではなく、はマルチバイト文字で正しく動作します。

ユニコード

ユニコード特定の文字数を読み出すためには、あなたは、このような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); 
} 
+0

varに全文を保存する必要がない場合は、これが最善の方法です!ニース!最も単純なソリューションは常に最高です – Math

+0

しかし、1つの質問、mb_substrのようなマルチバイトの安全ですか? http://php.net/manual/en/function.substr.php#90581 – Math

+1

@Math、 'file_get_contents'はバイナリセーフです。ただし、制限はバイト数を意味しますが、Unicode文字は意味しません。 ASCII以外の文字の場合は、別の解決策が必要になります。 –

-1

使用この:

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

あなたがSUBSTR()関数を使用する必要があります。

しかし、私はmultyバイトの安全mb_substr()を使用することをお勧めします。 SUBSTRで

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

あなたには、いくつかのアクセントなどがある場合Thoses問題は(mb_substrで発生しませんトラブルを取得します)

関連する問題