2013-10-18 104 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(); 

希望這有助於。

相關問題