PHP kullanarak kod tarafından (ne olursa olsun) olayları Strip Javascript

2 Cevap php

Ben küçük bir HTML parçacığını (4-6 satır) tüm JavaScript dışarı şerit istediğiniz, ben daha önce burada okudum kendi HTML üzerinde regex kullanmak için iyi değil, bu yüzden herkes daha iyi bir yol bilen varsa, lütfen bildiriniz.

Yani, örneğin ben aşağıdaki kodu var:

<a href="go/to/my/link" onclick="fetchMeSomeData(this)">My Link</a>
<p onfocus="doSomethingAmazing();"></p>

Şimdi PHP ben sadece boş bir alan (bunun ne olduğunu hiç olay) olayı değiştirmek istiyor.

2 Cevap

Kodundan JavaScript gibi şeyler ve eklentileri şerit HTML Purifier kitaplığı kullanın. Bu HTML temizlemek için tam bir HTML ayrıştırıcı ve bir beyaz liste kullanır, çünkü bir kara tabanlı regex yaklaşım daha sonra çok daha iyi.

Ben bir süre önce bu tür regexpi inşa ettik, ama biraz korkutucu görünüyor :). İşte saf sıradanifade, sen ayrıca dil gereksinimlerini karşılamak için özel karakter maske gerekebilir.

(\son[a-z]+\s*=\s*"[^"\\\r\n]*(?:\\.[^"\\\r\n]*)*"(?=[^<]*?>))|(\son[a-z]+\s*=\s*'[^'\\\r\n]*(?:\\.[^'\\\r\n]*)*'(?=[^<]*?>))

İşte (java standartlarına göre) maskeli sürümü bir dize olarak kullanmak gerekir olmasıdır.

(\\son[a-z]+\\s*=\\s*\"[^\"\\\\\\r\\n]*(?:\\\\.[^\"\\\\\\r\\n]*)*\"(?=[^<]*?>))|(\\son[a-z]+\\s*=\\s*'[^'\\\\\\r\\n]*(?:\\\\.[^'\\\\\\r\\n]*)*'(?=[^<]*?>))

Sadece iç etiketleri görünüyor ve olayların iç göz maskeli tırnak içine alır. Ben olsa% 100 kurşun geçirmez değildir eminim.