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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

2回答

479閲覧

phpで取得したコードをtextareaに「素の状態で」表示させたい

Webtuuuu

総合スコア30

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2019/02/25 13:10

編集2019/02/25 13:13

前提・実現したいこと

phpを使用して同一サーバー内 他階層にあるhtmlファイルのソースコードを取得し、
ページ内に設置してあるtextareaに表示させたいです。

しかし、取得先にはSSIインクルードが使用されており、インクルードの内容は取得したくありません。

①hoge/index.php //元となるページ
②huga/index.html //読み込みたいHTMLファイル
③huga/include.html //インクルードファイル

①hoge/index.phpの中身 ※head要素などは端折ってます。 ```html <body> <textarea> <?php $test = file_get_contents('huga/index.html'); echo $test; ?> </textarea> </body> ``` ②huga/index.htmlの中身 ※head要素などは端折ってます。 ```html <body> <!--#include virtual="include.html" --> </body> ``` ③huga/include.htmlの中身 ```html <div>テストでーす</div> <div>テストでーす</div> <div>テストでーす</div> ``` ### 発生している問題 冒頭にも記載したように、インクルードの中身は取得したくありません。 つまり③は①のtextarea内に記述されないのが理想です。 【現状】実行結果 ※head要素などは端折ってます。 現状は以下のようにインクルードされた状態で出力されます。 ```html <body> <textarea> <body> <div>テストでーす</div> <div>テストでーす</div> <div>テストでーす</div> </body> </textarea> </body> ``` 【理想】実行結果 ※head要素などは端折ってます。 理想は以下のようにインクルード部分は文字列として取得したいです。 ```html <body> <textarea> <body> <!--#include virtual="include.html" --> </body> </textarea> </body> ``` ### 試したこと・補足情報 もともとはajaxを使用して対象ファイルのコードの取得をし、textareaに表示させていましたが、 ajaxではそもそも表示時点ではなく「取得した時点で」インクルード込みで読み込まれてしまい、対策のしようがなかったため取得方法をphpに切り替えました。 初めからphpを使用しておけばよかったのですが私自身がサーバーサイド言語に疎くわからなかったためにphpでの取得も手間取っております。 ※phpに関してはほぼ基礎すら理解できていない初心者レベルです。 ちなみにajaxでは以下のように処理していました。 ```js var filepass = "huga/index.html"; //ファイルパス $.ajax({ url: filepass, type: 'GET', dataType: 'html', success: function (data) { $('textarea').text(data); //textareaにコードを書き出し }, error: function (data) { //取得できなかったらエラーメッセージを表示 } }); ``` --- phpを使用して取得は以下記事を参考に記述しましたが、やはりインクルード部分まで取得してしまいます。 **■参考:**[Qiita:PHPでファイルを開いて読み込む](https://qiita.com/tadsan/items/bbc23ee596d55159f044) 試したphp① ```php <?php $test = file_get_contents('huga/index.html'); echo $test; ?> ``` 試したphp② ```php <?php $test = readfile('huga/index.html'); echo $test; ?> ``` ↑どちらもダメでした --- この「インクルードは読み込まずに素のHTMLソースを取得する」にはどのように記述すればよいでしょうか? また、そもそもそれは技術的に可能なんでしょうか? ご教示いただければ幸いです。 宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

HTTP通信で読み込むとSSIの埋め込みがされたものがレスポンスとして返ってきてしまいますので、ネットワークを介さないで直接ファイルを読み込む必要があります。

file_get_contents()でしたら絶対パスで指定してやるとHTTP通信しないで読み込んでくれると思います。

php

1file_get_contents(__DIR__.'/huga/index.html');

投稿2019/02/25 16:58

yhg

総合スコア2161

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

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

Webtuuuu

2019/02/26 04:22

記載頂いた方法で無事解決いたしました。 「HTTP通信で読み込むとSSIの埋め込みがされたものがレスポンスとして返ってきてしまう」という部分の認識ができておりませんでした。 大変勉強になりました。ありがとうございます!
guest

0

生データを読めばincludeタグは避けられませんし
評価後のデータを読めば埋め込まれたタグが表示されるのは避けられません
どちらかを選択した上で、不要な部分をカットするしかないでしょう

投稿2019/02/26 00:42

yambejp

総合スコア114769

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問