2013-10-18 42 views
0

我有一堆.html文件,我包括在一个页面上。有条件,我需要类添加一些这些文件中的组件,例如:PHP修改一个包含的文件

<div id='foo' class='bar'></div> 

<div id='foo' class='bar bar2'></div> 

我知道我可以与一些在线PHP这样

<div id='foo' class="bar <?php echo " bar2"; ?>"></div> 
做到这一点

但是,在我包含的任何文件中使用PHP都不是一种选择。

我也看着包括一个文件,然后修改后,但似乎不可能。然后我想我应该逐行阅读这些文件,然后添加它。

有没有更好的方法,我没有想到?

回答

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

这应该让你开始。

0

您可能需要使用.php而不是.html。 所以做象下面这样:

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

其中htmlfile.html由

<div id='foo' class="bar <?php echo $variableClass; ?>"></div> 
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(); 

希望这有助于。