ロゴ メインコンテンツへ
RSSフィード
「Web 開発」に関連する記事一覧

PHPでhtmlファイルの内を抽出する

2022/07/31
(この記事の文字数: 333)
PHP 

PHP で html ファイルの<body>タグの中身を取得したかったんですが、以下のページに書いてあるような DOMDocument を使う方法だと、vue.js のような特殊な属性の記述方法をしている箇所でパースエラーが出てしまいダメでした。

https://stackoverflow.com/questions/11254619/get-contents-of-body-without-doctype-html-head-and-body-tags

結局、自前で文字列パースしてbodyタグ内の文字列を取得するようにしました。抜けはあるかもしれませんが、とりあえず私の用途だとそれで十分でした。誰かの役に立つかもしれないので、実装したコードを記載しておきます。


function extractBodyContent($html)
{
	$bodyTag = "<body";
	$beginTagPos = mb_strpos($html, $bodyTag);
	if ($beginTagPos === false)
	{
		$bodyTag = "<BODY";
		$beginTagPos = mb_strpos($html, $bodyTag);
		if ($beginTagPos === false)
		{
			return false;
		}
	}

	$tmpHtml = mb_substr($html, $beginTagPos);
	$bodyEndPos = mb_strpos($tmpHtml, ">"); // bodyタグの終了
	$contentBeginPos = $bodyEndPos + 1;
	$tmpHtml = mb_substr($tmpHtml, $contentBeginPos);
	$contentLength = mb_strpos($tmpHtml, "</body>");
	if ($contentLength === false)
	{
		$contentLength = mb_strpos($tmpHtml, "</BODY>");
		if ($contentLength === false)
		{
			// bodyの終了タグが見つからない
			return false;
		}
	}
	return mb_substr($tmpHtml, 0, $contentLength);
}

function getBodyFromHtmlFile($htmlFilePath)
{
	$html = file_get_contents($htmlFilePath);
	$result = extractBodyContent($html);
	if ($result === false)
	{
		// bodyタグが見つからない場合はhtmlをそのまま返しておく
		return $html;
	}
	return $result;
}
      


  このエントリーをはてなブックマークに追加  

<<「Web 開発」の記事一覧に戻る

コメント(0 件)



コンテンツロード: 0.0095 sec
Copyright(C)2006-2024 puarts All Rights Reserved