2017-09-11 4 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> 

我々はURL http://www.example.com/enquiry/&vehicle=2012 Ford Fiestaを作るためにstr_replaceに追加することができますどのようなので、私たちは渡すことができますそれはフォームに?

+0

は、変数$の内容に何が来るのかに依存し、それが –

+1

あなたの質問が明確ではありませんどのように構造化されました。このコードで直面している問題は何ですか?期待される成果は? –

答えて

0

最初にDOM操作のためのstr_replaceを使用するのは良くありません。

第2に、新しい(私があなたがいると思う)人は、おそらく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> 
関連する問題