繁体   English   中英

PHP修改包含的文件

[英]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 ParserXPath选择器结合使用

$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类:

http://php.net/manual/zh/class.domdocument.php

您可能需要使用.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM