0

谢谢你这么快回答我的问题。我做了更多的挖掘工作,最终找到了一种解决方案,可以从外部文件和特定的 div 中获取数据,并使用 PHP DOMDocument 将其发布到另一个文档中。现在我希望通过添加一个 if 条件来改进代码,如果 getElementById 最初调用的那个现在有数据,它将从不同的 div 中获取数据。这是我到目前为止得到的代码。

外部 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 grab <div id="alternate"><img src="filler.png" /></div>。有人可以帮我修改上面的函数来实现这个结果。

谢谢。

4

3 回答 3

0

简短的回答是:虽然有可能采用这种方法可能是非常糟糕的主意。

更长的答案:解决方案可能太复杂了。如果您的master.php文件中只有 HTML 标记,您可以使用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 包含来执行此操作。查看 PHP 模板;这可能是最好的解决方案。或者,由于您是该语言的新手,请尝试使用变量:

大师.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 回答
0

要么拆分 master.php,所以 div1\2 每个都在一个文件中,或者将它们分别设置为一个 var,它们包括 master.php,并使用适当的变量

大师.php

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

描述1.php

include 'master.php';
echo $d1;
于 2013-05-14T20:20:50.027 回答