[英]PHP Modify an included file
我在页面上包含一堆.html
文件。 有条件地,我需要向这些文件中的某些组件添加类,例如:
<div id='foo' class='bar'></div>
至
<div id='foo' class='bar bar2'></div>
我知道我可以使用一些内联PHP来做到这一点
<div id='foo' class="bar <?php echo " bar2"; ?>"></div>
但是,在我包含的任何文件中都没有PHP是一种选择。
我还研究了包括一个文件,然后进行修改,但这似乎是不可能的。 然后我想我应该逐行读取文件,然后将其添加。
我有没有想过的更好的方法?
由于不选择使用PHP,因此可以将PHP的DOM Parser与XPath选择器结合使用 :
$dom = new DOMDocument();
$dom->loadHTMLFile($htmlFile);
$finder = new DomXPath($dom);
// getting the class name using XPath
$nodes = $finder->query("//*[contains(@class, 'bar')]");
// changing the class name using setAttribute
foreach ($nodes as $node) {
$node->setAttribute('class', 'barbar2');
}
// modified HTML source
$html = $dom->saveHTML();
那应该让您开始。
您可以在PHP中使用DOMDocument类从文件中检索信息,然后添加属性和数据。
我真的不记得DOMDocument的代码,所以这里没有(抱歉)没有包含任何代码,但是这里有一些链接:
使用此方法从文件中获取HTML:
http://php.net/manual/zh/domdocument.loadhtmlfile.php
查看DOMDocument类:
您可能需要使用.php而不是.html。 因此,如下所示:
$variableClass="bar2";
include("htmlfilename.html");
htmlfile.html由
<div id='foo' class="bar <?php echo $variableClass; ?>"></div>
取决于您实际想要实现的目标-但基本上,这往往可以通过客户端上的jQuery更好地解决。
但是无论如何,您都可以将HTML片段放入DOM对象中,对其进行分析和修改,并在修改后读回HTML,例如:
// including an HTML file writes to the output stream, so buffer this
ob_start();
include('myfile.html');
$html = ob_get_clean();
// make a DOMDocument
$doc = new DOMDocument();
$doc->loadHTML($html);
// make the changes you need to
$xpath = new DOMXPath($doc);
$nodelist $xpath->query('//div[@id="foo"]');
// etc...
// get modified HTML
$html = $doc->saveHTML();
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.