Для примера: Есть тег HTML: <TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellSpacing=0 cellPadding=0 border=1 style="mso-spacerun: yes" width=75 style="mso-tab-count: 3"> Нужно достать оттуда все style'ы c их содержимым от одной двойной кавычки до другой. т.е. Код (Text): style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" Код (Text): style="mso-spacerun: yes" Код (Text): style="mso-tab-count: 3" Пробую шаблон style=[\x22][a-zA-Z0-9]{*}[\x22] но, разумеется, он не работает, поскольку я нуб в регекспах и наверняка напортачил. Если не сложно, подскажите, пожалуйста, правильный вариант решения задачи. Заранее спасибо.
"~style\\s*=\\s*\"([^\"]+)\"~is" "~style\\s*=\\s*'([^']+)'~is" я так понимаю вы пытаетсь бороться с word разметкой после paste в визуальный редактор для этих целей советую tidy расширение или библиотеку htmlpurifier
Спасибо огромное! Выводит всё в виде: Код (Text): Array ( [0] => Array ( [0] => style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" [1] => style="mso-spacerun: yes" [2] => style="mso-tab-count: 3" [3] => style="mso-ansi-language: EN-US" ) [1] => Array ( [0] => BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext [1] => mso-spacerun: yes [2] => mso-tab-count: 3 [3] => mso-ansi-language: EN-US ) ) Но можно немножко разжевать? =) Зачем значок диеза (#) перед "style"? И зачем он нужен перед параметрами U,s, i? Разве параметры не отделяются от самого шаблона слэшем? После прочтения мануала я для себя понял, что "#" используется как символ, открывающий комментарий. Но здесь он работает явно не как открытие комментария. А.... или он используется как разделитель, о чём и свидетельствует его наличие впереди слова "style"? И ещё вопросик - а зачем используется параметр "s"? Ведь он же Осветите эти вопросы, пожалуйста, если не сложно. Пробовал, не работает. Хм? Вы совершенно верно подметили - интересует как раз таки чистка html-документа после того, как Word наполняет его ненужными параметрами аттрибута style и прочими мусорными тэгами. htmlpurifier глянул, правда, не дотошно - вроде бы для этих целей он подходит слабовато, похоже, он может отключать аттрибуты "style" но - разом. К сожалению, даже времени разбираться нет, т.к. его уйдет больше на то, чтобы понять, что он непригоден и для его модификации, нежели написать свой скрипт, который и пишу. Tidy существует вроде только для PHP5, установка и использование которой пока не представляется возможным. Если не сложно, чуть-чуть разжуйте Ваш вариант шаблона, пожалуйста. По сравнению с вариантом Sergey89 Ваша конструкция выглядит куда как более громоздкой и (для нуба) сложной. К тому же, у меня она не заработала ни в одном из представленных вариантов. Заранее спасибо.
Два диеза - это ограничители регулярного выражения. Вобще в PCRE принято использовать в качестве ограничителя прямой слеш, но можно отступить от правил и использовать другие пары символов. s после диеза - это модификатор шаблона, который указывает на то, что текст будет обработан как одна строка.