1

PHP の file_get_contents 関数で奇妙な問題が発生しています。現在、.md ファイルを読み取るアプリケーションを作成しています。完全に機能する単一のhtmlファイルに.mdファイルを構築するコマンドを作成しました。すべてのhtmlを適切なファイルに入れます。

しかし、.md ファイルを作成している場合、編集のたびに html を作成してどのように表示されるかを確認するのは面倒です。そこで、ブラウザからアクセスできるphpスクリプトを作成しました。これはコマンドとまったく同じですが、htmlコンテンツをファイルに入れる代わりに、画面にエコーアウトします。しかし、このスクリプトを呼び出すと、ファイル全体が読み取られず、html の最後の部分が切り取られます...

.md ファイル

### Test Readme for Category One

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor felis enim, molestie tincidunt erat feugiat a. 
Donec quis odio quis quam blandit convallis. Aenean eu lacus risus. Nulla congue non dui eu convallis. 

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer ac ante laoreet, placerat diam in, 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor felis enim, molestie tincidunt erat feugiat a. 

Donec quis odio quis quam blandit convallis. Aenean eu lacus risus. Nulla congue non dui eu convallis. 
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer ac ante laoreet, placerat diam in, 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor felis enim, molestie tincidunt erat feugiat a.

Donec quis odio quis quam blandit convallis. Aenean eu lacus risus. Nulla congue non dui eu convallis.                                                                                                                                  
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer ac ante laoreet, placerat diam in, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor felis enim, molestie tincidunt erat feugiat a. 
Donec quis odio quis quam blandit convallis. Aenean eu lacus risus. Nulla congue non dui eu convallis. 

出力

<h3>Test Readme for Category One</h3>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor felis enim, molestie tincidunt erat feugiat a. 
Donec quis odio quis quam blandit convallis. Aenean eu lacus risus. Nulla congue non dui eu convallis.</p>

<p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer ac ante laoreet, placerat diam in, 
Lorem ipsum dolor sit amet, consecte

ご覧のとおり、md ファイルの一部が切り取られています。このライブラリを使用して、md コンテンツを HTML に変換しますhttps://github.com/erusev/parsedown-extra

誰かがそれが何であるか考えていますか?

ありがとう!

=== 編集 ===

このファイルでデバッグしました: https://raw.githubusercontent.com/SeBuDesign/Write-Down/08be2a10281d99768f1d73ad7916b0bbc37903ea/docs/00_Category_One/00_Read_Me.md

そのファイルの内容をローカル ファイルに格納し、そのローカル ファイルの file_get_contents を実行します。これは、処理する最初のファイルであり、結果は次のとおりです。

### Test Readme Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor felis enim, molestie tincidunt erat feugiat a. Donec quis odio quis quam blandit convallis. Aenean eu lacus risus. Nulla congue non dui eu convallis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer ac ante laoreet, placerat diam in, hendrerit augue. Mauris pharetra, dui sed facilisis condimentum, ex lorem lobortis ante, ut ultrices nibh felis sit amet nibh. Pellentesque eget interdum nibh. Aenean interdum felis at tellus bibendum aliquet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus velit augue, interdum id metus id, iaculis porttitor purus.

コンテンツを取得する関数を見たい人向け:

/**
     * Parses the md files of the given path
     *
     * @return string
     */
    public function parseItems()
    {
        $iterate = $this->getRecursiveIterator();

        $html = "";
        foreach ($iterate as $fullPath => $fileInfo) {
            /** @var $fileInfo SplFileInfo */

            // Check if it's a directory or a .md file
            if ($fileInfo->getExtension() == 'md') {

                $fileName = StringHelper::removeMdExtension(StringHelper::removeOrderChars($fileInfo->getFilename()));

                $id = "";
                for ($depth = $iterate->getDepth() - 1; $depth >= 0; $depth--) {
                    $id .= StringHelper::removeOrderChars($iterate->getSubIterator($depth)->current()->getFilename())."/";
                }
                $id .= $fileName;

                $headerName = str_replace("_", " ", $fileName);
                $html .= "<h1 id='{$id}'>{$headerName}</h1>";

                $mdContent = file_get_contents($fileInfo->getRealPath());
                print_r($mdContent);die();
                $parseDown = new ParsedownExtra();
                $html .= $parseDown->text($mdContent);
            }
        }

        return $html;
}
4

3 に答える 3

1

スクリプトをデバッグします。まず、file_get_contents の使用後にプレーン テキストを出力します。すべてのテキストがある場合、パーサーの問題について考えることができます。次のステップでは、パーサーを使用してコンテンツを出力します。パーサー クラスをデバッグします。

于 2015-08-24T10:13:59.510 に答える
0

コードをローカル開発マシンではなくライブサーバーに配置すると、ライブマシンで魅力的に機能します... 2つのPHP.iniを比較しましたが、設定が間違っていることを特別に指摘するものは何もありません...だから私は'開発マシンを再インストールするつもりです:)

助けてくれてありがとう!

于 2015-08-24T14:03:39.037 に答える