phpで、ある簡単なHTMLを作成するようなものを作りたいと思っています。必要入力項目を入力して次へをクリックしたら、

HTMLコードと そのコードでできた内容をHTML上で結果としてどうなるのかを表示するようなプロ
グラムを作りたいと思っています。問題は、出来たHTMLコード内の<table>タグのみ取得したいと思っています。
http://d.hatena.ne.jp/kotaro01/20100511/1273588059
を参考にしながらつくろうと思ったのですがうまく掴めず、htmlコード表示が出来ません。同一のPHPで
HTML作成 HTMLコード表示 結果表示がしたいと思っています。 
HTMLコード表示はjavascriptでも大丈夫です。同一php内に置いて動くものであれば大丈夫です

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/02/21 18:24:41

ベストアンサー

id:TransFreeBSD No.2

回答回数668ベストアンサー獲得回数268

長くなったので別回答で。
あと、サンプルは短く目的どおり動かなくてもエラーの出ないものがよいです。

<?php 
if ($gyo === 2){
$htmlstr = <<<EOM
<table><tr>
<td>$title</td>
</tr></table>
EOM;
} elseif ($gyo === 3){
$htmlstr = <<<EOM
<table><tr>
<td><strong>$title</strong></td>
</tr></table>
EOM;
} else {
$htmlstr = <<<EOM
<table><tr>
<td><img src="$url1"/></td>
</tr></table>
EOM;
}

include('simple_html_dom.php');
$data = str_get_html($htmlstr);
foreach($data->find('tr') as $element){
echo $element->innertext;
}
?>
<?php
ob_start();
if ($gyo === 2){
?>
<table><tr>
<td><?php echo $title ?></td>
</tr></table>
<?php } elseif ($shop === "楽天" && $gyo === 3){ ?>
<table><tr>
<td><strong><?php echo $title ?></strong></td>
</tr></table>
<?php } else { ?>
<table><tr>
<td><img src="<?php echo $url1 ?>"/></td>
</tr></table>
<?php 
}
$htmlstr = ob_get_contents();
//ob_end_flush();
ob_end_clean();
 
include('simple_html_dom.php');
$data = str_get_html($htmlstr);
foreach($data->find('tr') as $element){
echo $element->innertext;
}
?>
他4件のコメントを見る
id:TransFreeBSD

あー、コードを表示したいって事ですね。いまさらですが。
あと、これもいまさらですが、こういう操作は理解して行わないとXSSを生じやすいですから気を付けてくださいね。
#元の生成過程が安全なら、たぶん安全だと思いますが。

2012/02/21 19:45:33
id:koonii26

わかりました。色々ありがとうございます。

2012/02/22 20:19:17

その他の回答1件)

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268

解答使い回しで申し訳ないが、昨日の事だし基本同じと思うので。
http://q.hatena.ne.jp/1329396133 より

そういうのをスクレイピングとか言ったりします。
http://www.php-seed.net/blog/archives/113
あと、ここで過去にあった質問ではsimple_html_dom.phpを使ってました。
http://q.hatena.ne.jp/1318845421
http://smkn.xsrv.jp/blog/2010/02/php_simple_html_dom_parser/
http://tips.recatnap.info/simple_html_dom_parser_memo/

他4件のコメントを見る
id:TransFreeBSD

1,2,3のどの方法がよいですか?

2012/02/17 20:30:29
id:koonii26

2か3でお願いします
色々ご迷惑かけます

2012/02/17 20:44:13
id:TransFreeBSD No.2

回答回数668ベストアンサー獲得回数268ここでベストアンサー

長くなったので別回答で。
あと、サンプルは短く目的どおり動かなくてもエラーの出ないものがよいです。

<?php 
if ($gyo === 2){
$htmlstr = <<<EOM
<table><tr>
<td>$title</td>
</tr></table>
EOM;
} elseif ($gyo === 3){
$htmlstr = <<<EOM
<table><tr>
<td><strong>$title</strong></td>
</tr></table>
EOM;
} else {
$htmlstr = <<<EOM
<table><tr>
<td><img src="$url1"/></td>
</tr></table>
EOM;
}

include('simple_html_dom.php');
$data = str_get_html($htmlstr);
foreach($data->find('tr') as $element){
echo $element->innertext;
}
?>
<?php
ob_start();
if ($gyo === 2){
?>
<table><tr>
<td><?php echo $title ?></td>
</tr></table>
<?php } elseif ($shop === "楽天" && $gyo === 3){ ?>
<table><tr>
<td><strong><?php echo $title ?></strong></td>
</tr></table>
<?php } else { ?>
<table><tr>
<td><img src="<?php echo $url1 ?>"/></td>
</tr></table>
<?php 
}
$htmlstr = ob_get_contents();
//ob_end_flush();
ob_end_clean();
 
include('simple_html_dom.php');
$data = str_get_html($htmlstr);
foreach($data->find('tr') as $element){
echo $element->innertext;
}
?>
他4件のコメントを見る
id:TransFreeBSD

あー、コードを表示したいって事ですね。いまさらですが。
あと、これもいまさらですが、こういう操作は理解して行わないとXSSを生じやすいですから気を付けてくださいね。
#元の生成過程が安全なら、たぶん安全だと思いますが。

2012/02/21 19:45:33
id:koonii26

わかりました。色々ありがとうございます。

2012/02/22 20:19:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません