PHP ile en inline stilleri ve özellikleri Çıkarma

1 Cevap php

Bu soru benzer bir davayla ilgili, yani Removing inline styles using php

Çözüm yani orada kaldırmaz: <font face="Tahoma" size="4">

Ama ben bu gibi satır içi stilleri ve özellikleri karışık bir çanta var diyelim:

<ul style="padding: 5px; margin: 5px;">
    <li style="padding: 2px;"><div style="border:2px solid green;">Some text</div></li>
    <li style="padding: 2px;"><font face="arial,helvetica,sans-serif" size="2">Some text</font></li>
    <li style="padding: 2px;"><font face="arial,helvetica,sans-serif" size="2">Some text</font></li>  
</ul>

Ne Regexp Bu sonuca ulaşmak için gerekli olan?

<ul>
    <li><div>Some text</div></li>
    <li><font>Some text</font></li>
    <li><font>Some text</font></li>  
</ul>

1 Cevap

Her zamanki gibi, regex HTML ayrıştırma için ideal değildir; Eğer gerçek bir HTML çözümleyici ile daha iyi olurdu çok mümkün.

O dedi ...

$noattributes = preg_replace('/<(\w+) [^>]+>/', '<$1>', $original);

W ... / nitelikleri o etiketi ile ilgili özelliklerini içeren herhangi bir açılış etiketleri değiştirmek olacaktır. Ancak, yanlışlıkla başka etiketleri alıntı nitelikleri bulunan (ve dolayısıyla aslında kendilerini etiketleri değil) olan "etiketler" hit olabilir. Kendiliğinden kapanan etiketler arasında bir boşluk yoksa bu önlenebilir rağmen - o da kendiliğinden kapanan etiketler ile ilgili sorunlar (o <br /> ile değiştirin edeceğiz <br>) neden olur etiket adı ve ustalaşan.