Nasıl diğer iç içe geçmiş öğeler dahil tüm <span> etiketlerini ve kendi içeriği, kaldırabilirim?

oy
1

Ben sadece içeriği ve iç içe başka bırakarak tagları kaldırmak birkaç çözümler denedim

Düzenli ifade,

preg_replace('/<span\b[^>]*>(.*?)<\/span>/ig', '', $page->body);

ayrıca HTML temizleyici kullanarak çalıştı,

$purifier->set('Core.HiddenElements', array('span'));

$purifier->set('HTML.ForbiddenElements', array('span')); 
Oluştur 12/05/2016 saat 14:36
kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
2

Gerçek dizeleri ve size düzenli bir ifade kullanabilirsiniz çalıştı şeylere bağlı olarak (sizin açıklık etiketleri yalnızca açıklık etiketleri varsayılarak). Daha "uygun" çözüm ancak böyle bir html ayrıştırıcı kullanmak olacaktır DOMDocument .

Sen işlevini kullanabilirsiniz document.getElementsByName("span");tüm açıklığı öğelerini almak ve belge nesneden kaldırmak için.
Sonra kullanmak saveHTML geri html kodunu almak için.

Böyle bir şey alacak:

$doc = new DOMDocument;
$doc->load($yourpage);

$root = $doc->documentElement;

// we retrieve the spans and remove it from the book
$spans = $book->getElementsByTagName('span');
foreach ($spans as $span){
    $root->removeChild($span);
}

echo $doc->saveXML();
Cevap 12/05/2016 saat 14:43
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more