Hiç şans ile, bir Div içeriğini değiştirmek için çalışıyor

4 Cevap php

Ive hiç kanlı şans ile Dom modelini kullanmaya çalıştı, GetElementById sadece benim için çalışmıyor.

Ben bir regex için çare nefret ama başka ne yapacağımı bilmiyorum.

Fikir, yeni bir <div id="content_div"> NEW ALL SORTS HERE </div> ile <div id="content_div"> all sorts </div> olarak değiştirin ve dize ondan önce veya sonra oldu bir şey tutmaktır.

Dize kısmi HTML dize ve özellikle wordpress Mesajlar DB çıktı.

Herhangi bir fikir?

UPDATE: I tagged this question PHP but probably should of mentioned Im looking for a PHP solution only.

Update: Code Example

$content = ($wpdb->get_var( "SELECT `post_content` FROM $wpdb->posts WHERE ID = {$article[post_id]}" ));

$doc = new DOMDocument();
$doc->validateOnParse = true; 
$doc->loadHTMLFile($content);   
$element = $doc->getElementById('div_to_edit');

Böylece Ive kod bir sürü denedim ve bu Ive şimdiye kadar, muhtemelen doğru değil ama Ive iken şimdi biraz boyunca ona hack ne var.

4 Cevap

ok i $content bir parçası olduğunu varsayıyorum? o zaman bu size ihtiyacınız olabilir:

$doc = new DOMDocument();
$doc->validateOnParse = true; 
$doc->loadHTMLFile('<html><body>' . $content . '</body></html>');   
$element = $doc->getElementById('div_to_edit'); 

Haklısın: getElementByID çalışmaz.

Try getElementById() yerine. Javascript harf duyarlıdır.

Eğer geçerli bir web sayfası olması gerektiğini unutmayın ve bunun tam HTML ağacı anlamına gelir:

<html>
<head>
<script type="text/javascript">
function changeText(div){
    document.getElementById(div).innerHTML = 'my new text';
}
</script>
</head>
<body>

--- your body ---

<div id="DIV_ID">old text</div>

<input type="button" onclick="chageText('DIV_ID');" value="Click me" />

</body>
</html>

Sizinle getElementById aramak zorunda unutmayın:

<script type="text/javascript"> // as from HTML5 you can use only <script>
    document.getElementById("DIV_ID").innerHTML = 'my new text';
</script>

Bu deneyin ..

var myDiv = document.getElementById('content_div');
myDiv.innerHTML = "NEW ALL SORTS HERE";