如何使用链接在HTML字符串中添加包装特定元素

时间:2017-09-11 16:33:46

标签: php html

我有一个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,以便我们将其传递给表单?

1 个答案:

答案 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>