2017-09-11 23 views
1

我有一個HTML饋送進入網站,我們正在替換某些部分以適應網站。我們有以下幾點:如何在鏈接中添加HTML字符串中的包裝特定元素

$contents = str_replace('<div id="bic-return">', '<a href="http://www.example.com/enquiry/" class="enquire-link">MAKE AN ENQUIRY</a><div id="bic-return">', $contents); 

在頁面上,我們有一個生成這樣的動態代碼:

<div id="bic-title"> 
    2012 Ford Fiesta <span class="main-price">10000</span> 
</div> 

我們可以添加什麼到str_replace使URL http://www.example.com/enquiry/&vehicle=2012 Ford Fiesta所以我們可以把它以一種形式?

+0

要看什麼來在變量$內容以及它是如何構建 –

+1

你的問題不明確。你在這個代碼中面臨的問題是什麼?你的預期產出是多少? –

回答

0

首先使用str_replace進行DOM操作並不好。其次,如果你是新的(我可以感覺到你是),你可能會考慮使用帶有eval修飾符的preg_replace,這也不好。

對於像這樣的DOM操作,您應該真的使用類似DOMDocument + XPath或其他DOM實現的東西。

給你一個這樣做的例子,用你的輸入。它應該是這樣的:

<?php 
// Your feed source 
$html_source = '<div id="bic-title"> 2012 Ford Fiesta <span class="main-price">10000</span></div>'; 

$dom = new DOMDocument(); 

// Put your feed into the DOM. 
// LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD ensures that you don't have <html> and <body> tags in output. PHP Wierdness. 
$dom->loadHTML($html_source, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 

// Find your element 
$div = $dom->getElementById('bic-title'); 
$div_text = trim($div->nodeValue); 

// Make a new link element 
$link = $dom->createElement('a'); 

// Assign the URL you want 
$link->setAttribute('href','somelink.php?id=' . urlencode($div_text)); 

// Move elements from div to link 
while($div->childNodes->length > 0){ 
    $node = $div->childNodes->item(0); 
    $div->removeChild($node); 
    $link->appendChild($node); 
} 

// Add link to div 
$div->appendChild($link); 

// Output 
echo $dom->saveHTML(); 
?> 

結果:

<div id="bic-title"><a href="somelink.php?id=2012+Ford+Fiesta+10000"> 2012 Ford Fiesta <span class="main-price">10000</span></a></div> 
相關問題