PHP修改包含的文件

时间:2013-10-18 17:35:30

标签: php html

我在页面上包含了一堆.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都不是一个选项。

我还研究了包含一个文件然后再修改,但这似乎不可能。然后我想我应该逐行阅读文件,然后添加它。

有没有更好的方式我没想到?

4 个答案:

答案 0 :(得分:2)

由于PHP不是一个选项,你可以使用PHP的DOM ParserXPath selector

$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();

这应该让你开始。

答案 1 :(得分:1)

您可以使用PHP中的DOMDocument类从文件中检索信息,然后添加属性和数据。

我真的不记得DOMDocument的代码所以我这里没有包含任何代码(抱歉),但这里有一些链接:

使用此方法从您的文件中获取HTML:

http://php.net/manual/en/domdocument.loadhtmlfile.php

查看DOMDocument类:

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

答案 2 :(得分:0)

您可能需要使用.php而不是.html。 如下所示:

$variableClass="bar2";
include("htmlfilename.html");

htmlfile.html由

组成
<div id='foo' class="bar <?php echo $variableClass; ?>"></div>

答案 3 :(得分:0)

取决于你真正想要实现的目标 - 但基本上这可以通过客户端上的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();

希望这有帮助。