0

私の質問にとても早く答えてくれてありがとう。さらに掘り下げて、最終的に、外部ファイルと特定の div からデータを取得し、PHP DOMDocument を使用して別のドキュメントに投稿するソリューションを見つけました。getElementById によって最初に呼び出されたものが現在データを持っている場合、別の div からデータを取得する if 条件を追加して、コードを改善しようとしています。ここに私がこれまでに得たコードがあります。

ソースとしての外部 html。

<div id="tab1_header" class="cushycms"><h2>Meeting - 12:00pm to 3:00pm</h2></div>

ソースから呼び出す PHP ファイルは次のようになります。

<?php

$source = "user_data.htm";
$dom = new DOMDocument();
$dom->loadHTMLFile($source);
$dom->preserveWhiteSpace = false;
$tab1_header = $dom->getElementById('tab1_header');

?>


<html>

<head>
    <title></title>
</head>

<body>

<div><h2><?php echo $tab1_header->nodeValue; ?></h2></div>


</body>


</html>

次の関数は、div id が見つからない場合にメッセージを出力しますが...

if(!tab1_header)
{
    die("Element not found");
}

最初に呼び出された div にデータがない場合は、別の div を呼び出したいと思います。意味 if <div id="tab1_header"></div>then をつかみ<div id="alternate"><img src="filler.png" /></div>ます。この結果を達成するために上記の関数を変更するのを誰かが手伝ってくれますか?

ありがとう。

4

3 に答える 3

0

master.php を分割して div1\2 がそれぞれのファイルに含まれるようにするか、それぞれを var に設定して master.php をインクルードし、適切な変数を使用します。

master.php

$d1='<div id="description1">Some Text</div>';
$d2='<div id="description2">Some Text</div>';

description1.php

include 'master.php';
echo $d1;
于 2013-05-14T20:20:50.027 に答える
0

短い答えは次のとおりです。可能性はありますが、このアプローチを採用することはおそらく非常に悪い考えです。

より長い答え: ソリューションが複雑すぎることが判明する可能性があります。ファイルに HTML マークアップのみが含まれている場合はmaster.php、そのファイルのコンテンツをfile_get_contents()関数で読み取り、解析することができます (つまり、DOMDocument ライブラリ関数を使用)。指定された id の div を探す必要があります。

$doc = new DOMDocument();
$doc->loadHTMLFile($file);

$divs = $doc->getElementsByTagName('div');

foreach ($divs as $div) 
{
   if( $div->getAttribute('id') == 'description1' )
   {
    echo $div->nodeValue."\n";
   }
}
?>

ファイルに動的コンテンツも含まれている場合master.phpは、次のトリックを実行できます。

<?php
ob_start();
include('master.php');
$sMasterPhpContent = ob_get_clean();
// same as above - parse HTML
?>

編集:

$tab_header = $dom->getElementById('tab1_header') ? $dom->getElementById('tab1_header') : $dom->getElementById('tab2_header');
于 2013-05-14T20:30:45.157 に答える
0

div を別のファイルに配置しない限り、PHP の include だけでこれを行うことはできません。PHP テンプレートを調べてください。それはおそらくこれに対する最良の解決策です。または、言語に慣れていないので、変数を使用してみてください。

master.php

$description1 = '<div id="description1">Some Text</div>';
$description2 = '<div id="description2">Some Text</div>';

board1.php

include 'master.php';

echo $description1;

board2.php

include 'master.php';

echo $description2;

別の方法として、JavaScript を使用することもできますが、少し面倒になる可能性があります。

于 2013-05-14T20:19:45.590 に答える