|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » регулярные выражения |
|
регулярные выражения
|
Рыжая Сообщения: 1550 |
Профиль | Сайт | Отправить PM | Цитировать Помогите, пожалуйста, составить рег. выражение:
Вот пример кода, который не работает: $text = "some text with image <img src=”../user_img/093470394746/image.gif”> goes here for testing purposes"; preg_match('/user_img\/ ? ([0-9]{12})\/ ',$text,$result); foreach( $result as $v) echo "res - ".$v; Вернуть его в переменную. Количество цифр всегда 12. Читать нужно либо 12 цифр подряд, либо до forward slash «/». |
|
------- Отправлено: 17:51, 21-12-2004 |
Рыжая Сообщения: 1550
|
Профиль | Сайт | Отправить PM | Цитировать vadimiron
потому что я тут только часть в аррей указала, а там очень много других рег. выр. которые работают |
------- Отправлено: 16:38, 27-01-2005 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Цитата:
Надо либо поменять местами, либо лучше было бы дописать такой вид ковычек в ['\"], попробуй вот так:
|
|
------- Отправлено: 23:49, 27-01-2005 | #12 |
Ветеран Сообщения: 1404
|
Профиль | Отправить PM | Цитировать в 1 случае у меня получилось:
во 2 случае:
Это будет работать вне зависимости от того: 1) есть ли после p class="amega" закрыващий тэг или нет 2) строка заключена в ' или в " или в ` или без кавычек 3) есть ли перед и после = пробелы вне зависимости от их количества Это не будет работать, если перед закрывающим тэгом находятся пробелы. |
Последний раз редактировалось mrcnn, 28-01-2005 в 09:29. Отправлено: 08:43, 28-01-2005 | #13 |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать mrcnn
Одно только замечание, (.*) обознаечает, насколько я понимаю, бесконечное повторение любого элемента, предположим переменная $text содержит целую страницу HTML, где-то 5000 знаков, и первый class попадается только на 3000-чном знаке, тогда внутренняя переменная $1 функции preg_replace будет содержать все знаки до этого 3000-чного, что является не очень эффективным способом поиска, к этому надо ещё прибавить, что фугкции регулярок и без того притормаживают, так что я посоветовал бы искать напрямую class, и заменять его пустым знаком (то есть удалять) |
------- Отправлено: 13:20, 28-01-2005 | #14 |
Ветеран Сообщения: 1404
|
Профиль | Отправить PM | Цитировать vadimiron:
Да, Вы абсолютно правы, с этой точки зрения не совсем эффективно. И у меня появилось еще одно собственное замечание - если в строке несколько паттернов (например, $text = "<p class = \"lala\" align='center'>klmn oprst</p> <p class = \"lala\" align='center'>klmn oprst</p>" ; ) , то заменен будет только один из них. Итого, с учетом обоих замечаний, получается так: while (preg_match('/class(\s+)?=/', $text)){ $text=preg_replace('/ class(\s+)?=(\s+)?(\"|\'|\`)?(\w+)(\"|\'|\`)?/', "", $text); } |
Отправлено: 13:47, 28-01-2005 | #15 |
Рыжая Сообщения: 1550
|
Профиль | Сайт | Отправить PM | Цитировать mrcnn
на скол'ко я поняла этот код: '/ class(\s+)?=(\s+)?(\"|\'|\`)?(\w+)(\"|\'|\`)?/' не учитывает того, что класс может быт' написан заглавными буквами? тепер если я хочу ещё и style искат'? тогда нужно так?: '/ (class|style)(\s+)?=(\s+)?(\"|\'|\`)?(\w+)(\"|\'|\`)?/' |
------- Отправлено: 18:04, 01-02-2005 | #16 |
Ветеран Сообщения: 1404
|
Профиль | Отправить PM | Цитировать Ginger
Цитата:
'/ class(\s+)?=(\s+)?(\"|\'|\`)?(\w+)(\"|\'|\`)?/i' Цитата:
|
||
Отправлено: 04:14, 02-02-2005 | #17 |
Рыжая Сообщения: 1550
|
Профиль | Сайт | Отправить PM | Цитировать Вот полностью аррей с прегами. Рабочий вариант.
$searches = array("[\']","'<h[4-5][^>]*?>'si","'</h[4-5]>'is","'<h[1-3][^>]*?>'si","'</h[1-3]>'si","'<hr[^>]*?>'si", '/ (class|style)(\s+)?=(\s+)?(\"|\\\"|\'|\`|\\\`)?(\w+)(\"|\\\"|\'|\`|\\\`)?/si'); $replaces = array("`" ,"<h4>" ,"</h4>" ,"<h3>" ,"</h3>" ,"<hr size=\"1\">",""); $text = preg_replace($searches,$replaces,$text); Do: <pre CLASS=KLMN>Proveriaem rabotu pregov</pre> <p class="klmn">Etot s kavychkami</p> <p class=clas>Etot class bez kovychek</p> <p class='clas'>Etot class s odinarnymi kovychkami</p> <pre STYLE=KLMN>Proveriaem rabotu pregov</pre> <p style="klmn">Etot s kavychkami</p> <p style=clas>Etot class bez kovychek</p> <p style='clas'>Etot class s odinarnymi kovychkami</p> Posle: <pre>Proveriaem rabotu pregov</pre> <p>Etot s kavychkami</p> <p>Etot class bez kovychek</p> <p>Etot class s odinarnymi kovychkami</p> <pre>Proveriaem rabotu pregov</pre> <p>Etot s kavychkami</p> <p>Etot class bez kovychek</p> <p>Etot class s odinarnymi kovychkami</p> А в моём скрипте текст берётся из формы и обрабатывается прегами Я балда, что сразу об этом не сказала.. Просто сегодня копалась с addslashes() stripslashes() и за одно всё же посмотрела, как работает $_POST – выяснила, что он автоматом слаши добавляет… Спасибо огромное mrcnn, vadimiron, что помогли составить преги. ) (k) |
------- Отправлено: 19:39, 02-02-2005 | #18 |
Engrossed by the Void Сообщения: 2229
|
Профиль | Отправить PM | Цитировать Ginger, маленькая ремарочка. Слэши в приходящие данные будут вставляться в соответствии с установками в php.ini:
Цитата:
|
|
------- Отправлено: 08:49, 03-02-2005 | #19 |
Рыжая Сообщения: 1550
|
Профиль | Сайт | Отправить PM | Цитировать Prisoner
это я уже знаю. ) тол'ко на сервере ини редактироват нет возможности ) ALL ) если желание ест' давайте усложним задачу? стили и класс нужно удалят' везде кроме тага <pre> я знаю, что нужно испол'зоват ^ , но не знаю как ) |
------- Отправлено: 15:07, 04-02-2005 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Java - Регулярные выражения Java | ValVlaGen | Программирование и базы данных | 0 | 19-10-2009 08:06 | |
Прочее - grep регулярные выражения | dogidogi | Общий по Linux | 8 | 28-05-2009 22:54 | |
Разное - PHP - регулярные выражения: HELP | GoldenOrb | Программирование и базы данных | 10 | 08-09-2008 16:47 | |
PHP - регулярные выражения: HELP | GoldenOrb | Вебмастеру | 13 | 18-07-2008 16:05 | |
Регулярные выражения | est | Хочу все знать | 6 | 02-10-2002 14:17 |
|