我有一个HTML Feed进入网站,我们正在更换某些部分以适应该网站。我们有以下内容:
$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
添加什么来制作网址http://www.example.com/enquiry/&vehicle=2012 Ford Fiesta
,以便我们将其传递给表单?
答案 0 :(得分:0)
首先使用str_replace进行DOM操作并不好。
其次,如果你是新人(我可以感觉到你),你可能会考虑使用preg_replace
和eval修饰符,这也不好。
对于像这样的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>