PHP - dom appendChild () - etrafında PHP DOM kullanarak html etiketleri seçilen dizeleri ekleme

1 Cevap php

Bazı html aracılığıyla çalıştırmak ve bir "A" etiketi her örneği etrafında bazı özel etiketler eklemek için çalışıyorum. Ben bugüne kadar var, ama aslında bağlantı etiketlerini benim pseudotags ekleyerek son adımı kimse bazı rehberlik sunabilir, beni atlattı mı?

Ben şaşırıp nerede - Tüm kod son satırı kadar harika çalışıyor. Nasıl bu pseudotags seçilen "A" etiketinin yan? Ya yerleştiririm

$dom = new domDocument;
$dom->loadHTML($section);
$dom->preserveWhiteSpace = false;
$ahrefs = $dom->getElementsByTagName('a');
foreach($ahrefs as $ahref) {
	$valueID = $ahref->getAttribute('name');
	$pseudostart = $dom->createTextNode('%%' . $valueID . '%%');
	$pseudoend = $dom->createTextNode('%%/' . $valueID . '%%');
	$ahref->parentNode->insertBefore($pseudostart, $ahref);
	$ahref->parentNode->appendChild($pseudoend);
	$expression[] = $valueID; //^$link_name[0-9a-z_()]{0,3}$
	$dom->saveHTML();
}
//$dom->saveHTML();

Ben bu aşağıdaki gerçekleştirmek için almak için umuyorum:

<a href="xxx" name="yyy">text</a>

dönüştü

%%yyy%%<a href="xxx" name="yyy">text</a>%%/yyy%%

Ancak şu anda bir şey yapmak için görünmüyor - sayfa çıkışları, ama hiçbir değiştirmeleri veya kaynağına eklenen düğümleri vardır.

1 Cevap

ahref düğüm sarılı olduğundan emin olmak için, ...

foreach($ahrefs as $ahref) {
    $valueID = $ahref->getAttribute('name');
    $pseudostart = $dom->createTextNode('%%' . $valueID . '%%');
    $pseudoend = $dom->createTextNode('%%/' . $valueID . '%%');
    $ahref->parentNode->insertBefore($pseudostart, $ahref);
    $ahref->parentNode->insertBefore($ahref->cloneNode(true), $ahref); // Inserting cloned element (in order to insert $pseudoend immediately after)
    $ahref->parentNode->insertBefore($pseudoend, $ahref);
    $ahref->parentNode->removeChild($ahref); // Removing old element
}
print $dom->saveXML();