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