HTML yorumlarını şerit RegExp

7 Cevap php

Bir kibrit sıradanifade dizisi arıyor ve (tercihen PHP ama önemli değil) yerine (başlangıç ​​ve bitiş korunması gereken sadece rastgele metin) bu değiştirmek için.

IN:

fkdshfks khh fdsfsk 
<!--g1-->
<div class='codetop'>CODE: AutoIt</div>
<div class='geshimain'>
    <!--eg1-->
    <div class="autoit" style="font-family:monospace;">
        <span class="kw3">msgbox</span>
    </div>
    <!--gc2-->
    <!--bXNnYm94-->
    <!--egc2-->
    <!--g2-->
</div>
<!--eg2-->
fdsfdskh

Bu OUT:

fkdshfks khh fdsfsk 
<div class='codetop'>CODE: AutoIt</div>
<div class='geshimain'>
    <div class="autoit" style="font-family:monospace;">
        <span class="kw3">msgbox</span>
    </div>
</div>
fdsfdskh

Teşekkürler.

7 Cevap

Eğer sadece bir yorum çıkarmak için çalışıyorsun? Nasıl hakkında

s/<!--[^>]*-->//g

veya (soru soran kendisi tarafından önerilen) biraz daha iyi:

<!--(.*?)-->

Ama unutmayın, HTML birileri ona tuhaf kenar durumlarda atar not, düzenli, öyle ayrıştırmak için normal ifadeler kullanarak acı dünyasına götürecektir olduğunu.

preg_replace('/<!--(.*)-->/Uis', '', $html)

Bu PHP kodu $ html dizeden tüm html açıklama etiketleri kaldıracaktır.

Gibi, koşullu yorum dikkate almayı unutmayın

<!--(.*?)-->

bunları kaldıracaktır. Bunun yerine bu deneyin:

<!--[^\[](.*?)-->

Bu da olsa, alt düzey-ortaya koşullu yorum kaldıracaktır.

EDIT:

Bu alt düzey-açığa veya alt düzey-gizli yorumlarınıza kaldırmaz.

<!--(?!<!)[^\[>].*?-->

Ah ben bunu yaptık,

<!--(.*?)-->

Yorumlarınızı satır sonları içeriyorsa, aşağıdaki deneyin:

/<!--(.|\n)*?-->/g

these code is also remove javascript code. that's too bad :|

Burada javascript kodu bu kodla kaldırmak olacak örnek:

<script type="text/javascript"><!--
    var xxx = 'a';
    //-->
    </script>
<!--([\s\S]*?)-->

Javascript ve VBScript olarak da çalışır "." Tüm dillerde satır sonları eşleşmiyor