Çıkarma olay etiketleri niteliklerini

2 Cevap php

Ben bir dize tüm html etiketleri tüm olay özelliklerini bulmak ve kaldırmak için temiz ve basit bir komut dosyası gerekir. Onclick, onkeyup vb - "... üzerine," Bu öznitelikleri

EDIT: İşte onlar Kohana bunu nasıl:

$string = preg_replace('#(<[^>]+?[\x00-\x20"\'])(?:on|xmlns)[^>]*+>#iu', '$1>', $string);

EDIT: İşte onlar CodeIgniter'daki bunu nasıl:

$string = preg_replace("#<([^><]+?)([^a-z_\-]on\w*|xmlns)(\s*=\s*[^><]*)([><]*)#i", "<\\1\\4", $string);

2 Cevap

Fonksiyon 4 parametre alır.

  1. $ Msg. Eğer şerit istediğiniz metin niteliklerini.
  2. $ Etiket. Eğer (örneğin p,) öznitelikleri şerit istediğiniz etiket.
  3. $ Attr. Eğer (sağlam kalan bırakarak) şerit istediğiniz özniteliklerin adı ile bir dizi. Dizi boşsa, işlev tüm özelliklerini şerit olacak.
  4. $ Eki. Etiketine eklemek için isteğe bağlı bir metin. Bu, örneğin, yeni bir özellik olabilir.

Stripping Tag Attributes from HTML code Yazar mesajlar kod, ben uzun beri benim cevap onu ihmal ve kod mülkiyet iddia etmek istemiyordu yerden alınmıştır.

Bu sizin için ne arıyorsanız umuyoruz.

Bu hat üzerinde bir şey yapabilirsiniz:

<?php

$html = '<p class="foo" onclick="bar()">
    Lorem ipsum dolor sit amet, consectetur <em>adipisicing elit</em>,
    sed do eiusmod tempor incididunt ut labore
    <a href="http://www.google.es" onmouseover="mover()" onmouseout="mout()" title="Google">et dolore magna aliqua</a>.
    t enim ad minim veniam.</p>
';

$doc = new DOMDocument;
$doc->loadHTML($html);

echo "Before:\n" . $doc->saveHTML() . "\n";

foreach($doc->getElementsByTagName('*') as $node){
    $remove = array();
    foreach($node->attributes as $attributeName => $attribute){
        if( substr($attributeName, 0, 2)=='on' ){
            $remove[] = $attributeName;
        }
    }
    foreach($remove as $i){
        $node->removeAttribute($i);
    }
}

echo "After:\n" . $doc->saveHTML() . "\n";

?>

Bu sadece bir fikir. Tam bir belgede HTML parçasını dönüştürmek etiketleri ekler ama bir başlangıç ​​noktası olarak kullanabilirsiniz çünkü bazı verdiği gerekiyor.