Убрать Javascript на (что угодно) события из кода с использованием PHP - PullRequest
0 голосов
/ 06 мая 2010

Я хочу вырезать весь JavaScript из небольшого фрагмента (4-6 строк) HTML, который я читал здесь ранее, поэтому лучше не использовать REGEX для HTML, поэтому, если кто-нибудь знает лучший способ, пожалуйста, сообщите ,

Так, например, у меня есть следующий код:

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

Теперь в PHP я хочу заменить событие on (что бы это ни было) пустым пробелом.

Ответы [ 2 ]

2 голосов
/ 06 мая 2010

Используйте библиотеку HTML Purifier , чтобы убрать из кода такие вещи, как JavaScript и плагины. Это гораздо лучше, чем метод регулярных выражений на основе черного списка, потому что он использует полный анализатор HTML и белый список для очистки HTML.

1 голос
/ 06 мая 2010

Я построил такое регулярное выражение некоторое время назад, хотя выглядит немного страшно :). Вот чистое регулярное выражение, вам может потребоваться дополнительно замаскировать специальные символы для соответствия вашим языковым требованиям.

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

Вот замаскированная версия (в соответствии со стандартами Java), которую вы должны использовать в качестве строки.

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

Он смотрит только внутри тегов и учитывает замаскированные кавычки внутри событий. Я уверен, что это не 100% пуленепробиваемый, хотя.

...