Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вырезать javascript, Нужно вырезать javascript из html тегов 
V
    Опции темы
A1ekcandr
Дата 30.8.2013, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



Народ помогите составить регулярное выражение для вырезки javascript из html тегов

Код

<tr><td>Способ получения</td><td><nobr onchange="                
                    if(this.value>0) {
                        $('deliveryDiv').set('html','(уточните)');
                    } else {
                        "$('deliveryDiv').set('html','');
                    }
                    " style="color:red">Способ отдачи</nobr></td></tr>



При решении задачи, у меня получились следующие регулярные выражения:

Код

preg_replace('#(onchange|onselect|onmouseover|onmouseout)="(.*?)"#iu', '', $res);

Но проблема в том, что если в коде будет \"(экранированная кавычка), то такое регулярное выражение вырежет только часть кода. 

Если же сделать так:
Код

preg_replace('#(onchange|onselect|onmouseover|onmouseout)="(.*?)\s*">#iu','>', $res)

То могут вырезаться последующие атрибуты (например в данном случае style="color:red")тега, что тоже не гуд.

Друзья, получается мне нужен селектор на подобие (.*?)(?!\\")" т.е. выбрать весь текст до кавычки, если перед кавычкой не стоит обратный слеш. 


Это сообщение отредактировал(а) A1ekcandr - 30.8.2013, 15:35
PM MAIL   Вверх
Sanchezzz
Дата 30.8.2013, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



jevix возмите и пользуйтесь 


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
A1ekcandr
Дата 2.9.2013, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



Спасибо за информацию, о том что имеется такая библиотека. Но мне кажется что в моем случае, все таки будет проще написать нормально регвыр smile. К тому же библиотека написана под php5 а у меня используется php4 smile
PM MAIL   Вверх
ksnk
Дата 2.9.2013, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(A1ekcandr @  2.9.2013,  09:37 Найти цитируемый пост)
а у меня используется php4 

А с какой  целью нет перехода на 5.2, например? Переход на эту версию с 4-ки относительно бескровный. Вот у более старших версий многие функции объявлены deprecated, так что проблем может быть больше.

Пример с html в первом посте невалидный, это ничего?

Регуляркой можно было бы вырезать все атрибуты onXXX="...". Активные элементы , типа action у формы и href у ссылок нужно проверять на `похожую на url` строку.

Это сообщение отредактировал(а) ksnk - 2.9.2013, 10:02


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
A1ekcandr
Дата 2.9.2013, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



Проблему решил, в итоге получился  следующий регвыр:

Код

$content = preg_replace('#(onchange|onselect|onmouseover|onmouseout)\s*=\s*"(.*?)\s*((?<!\\\)")#is','',$content);



Добавлено через 4 минуты и 53 секунды
to ksnk
Дело в том что у нас в старой версии движка используются xslt шаблоны, из-за этого массовый переход всех клиентов на 5.2 становится практический невозможен. 

В итоге мы конечно сделали новую версию нашего ПО на php5, но есть старые клиенты у которых используется php4 и мы вынуждены пока поддерживать две ветки проекта.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0996 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.