質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

3462閲覧

saveHTML で空要素の / が消えてしまう

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/08/17 07:58

php内部でdom操作しようと思っています。
loadXMLを使いたいのですが、不完全なHTMLの場合、エラーとなります。

そこでloadHTML,saveHTMLを通すことで閉じタグ忘れなどを補完してから
loadXML,saveXMLを利用するようにしました。

しかしながら、<br /><br> となってしまいXML的にエラーとなります。

XHTMLではないので、このような結果になってしまうのかと思うのですが、
設定などで対応することは可能でしょうか?

よろしくお願いします。

php

1<?php 2$str = <<<EOF 3<p></p> 4<p> 5 <img src="test.gif"> 6 <br> 7<p> 8 <img src="test.gif" /> 9 <br /> 10<p>not closed 11EOF; 12 13$dom = new DOMDocument('1.0', 'UTF-8'); 14$dom->loadHTML($str); 15$html = $dom->saveHTML(); 16 17if( preg_match("/<body>(.*?)<\/body>/s", $html, $matches) ){ 18 $html = $matches[1]; 19} 20$html = htmlspecialchars($html); 21 22echo "<pre>"; 23echo $html; 24echo "</pre>";

閉じタグ忘れが補完されて出力されますが、<br/><br>に。

<p></p> <p> <img src="test.gif"><br></p><p> <img src="test.gif"><br></p><p>not closed</p>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

loadHTMLでdomを作成した後に、xmlを取得するという方法を利用することで目的は達成出来ました。

php

1$dom->loadHTML($str); 2$xml = simplexml_import_dom($dom)->asXML(); 3 4出力結果 5<p/> 6<p> 7 <img src="test.gif"/> 8 <br/></p><p> 9 <img src="test.gif"/><br/></p><p>not closed</p>
<p></p>はxmlは<p/>となってしまうので、最終的に調整します。 https://teratail.com/questions/13316

投稿2015/08/17 09:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問