imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 17.07.2008, 12:08     # 1
Viro_man
Banned
 
Аватар для Viro_man
 
Регистрация: 11.06.2008
Сообщения: 57

Viro_man Путь к славе только начался
preg_* регулярные выражения

Здравствуйте, мне тут понадобилась помощь по регулярным выражениям, из того скудного разъяснения на php.net ничего толкового из этого почерпнуть нельзя, сами выражения не разложены и не объяснены, поэтому очень прошу, посоветуйте книгу в электронном виде, или какое нибудь руководство. Если можно, то предпочту либо на немецком, либо на русском, или на худой конец на английском.
Viro_man вне форума  
Старый 17.07.2008, 12:43     # 2
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
хм, странное у тебя представление о "скудном разъяснении" - я так лично считаются пхпшную документацию по регэкспам одним из лучших мест в их документации вообще, в частности - Regexp details и regexp modifiers дают всю необходимую информацию.

Но если таки этого мало - в инете куча сайтов по регэкспам. Синтакс пхпных регэкспов практически идентичен перловому, поэтому любой запрос по regular expressions или perl regular expressions даст сразу кучу инфы, выбирай только на свой вкус. В частноти, вот сайт с примерами, туториалами и т.п.
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 17.07.2008, 14:37     # 3
Viro_man
Banned
 
Аватар для Viro_man
 
Регистрация: 11.06.2008
Сообщения: 57

Viro_man Путь к славе только начался
Saruman, охотно верю, просто видимо не нашёл сразу, ещё раз спасибо..
Viro_man вне форума  
Старый 17.07.2008, 15:54     # 4
Viro_man
Banned
 
Аватар для Viro_man
 
Регистрация: 11.06.2008
Сообщения: 57

Viro_man Путь к славе только начался
Значит мне нужна помощь, как сделать, чтобы
$match="|<table[^>]+>(.*)</table>|U";
вот этот патерн, а точнее написание table было не чувствительно к большим буквам.

Код:
$html = "<tAble fefsefe=\"sdff\">bold text</table><a href=howdy.html>click me</a><table aaa=\"dddd\">neuertext<a her=aaaf>rgfdf</a></table>";
$match="|<table[^>]+>(.*)</table>|U";
preg_match_all($match, $html, $matches, PREG_SET_ORDER);
print_r($matches);
Viro_man вне форума  
Старый 17.07.2008, 16:55     # 5
Viro_man
Banned
 
Аватар для Viro_man
 
Регистрация: 11.06.2008
Сообщения: 57

Viro_man Путь к славе только начался
Дозамутил
Код:
$match="|<((?i)table)[^>]+>(.*)</((?i)table)>|U";
вопрос снимается.
Viro_man вне форума  
Старый 17.07.2008, 17:59     # 6
Viro_man
Banned
 
Аватар для Viro_man
 
Регистрация: 11.06.2008
Сообщения: 57

Viro_man Путь к славе только начался
Не совсем до конца замутил,
мне нужно, чтобы он съедал не только по типу <table id="o">ddsd</table>, но и <table>ddsd</table>
Viro_man вне форума  
Старый 17.07.2008, 22:55     # 7
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
$match="|<((?i)table)[^>]*>(.*)</((?i)table)>|U";
crawler вне форума  
Старый 18.07.2008, 14:36     # 8
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
|<(table)[^>]*>(.*)</table>|Ui
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 28.08.2008, 22:12     # 9
DjArf
Newbie
 
Регистрация: 20.12.2005
Сообщения: 15

DjArf Нуль без палочки
Чтобы не поганить топик откровенно ламерским вопросом, спрошу здесь: как из строки вида
Код:
bla-bla-bla<tag>some text</tag>bla-bla-bla
выкусить "some text"?

добавлено через 55 минут
Вопрос снят. В джаббере Pahan-Hubbitus ответил:
Код:
#.*?<tag>(.*?)</tag>.*#
добавлено через 24 минуты
и пояснения от Pahan-Hubbitus:
Цитата:
# - соответственно ограничитель, начальный и конечный.
. - что-либо. По сути все что угодно, любой символ (за исключением переносов строк, если не указан модификатор s, за подробностями в МАН). Если модификаторами шаблон не заякорен (anchored) то можно опустить. На всякий случай привел. Должно и без него быть нормально, в данной ситуации (собственно данных-то маловато что делаете и чем и на чем).
* - Квантификатор "ноль или больше". Действует на впереди стоящий символ или выражение (в данном случае точку)
? - инверсия жадности квантификатора (angry). По-умолчанию квантификаторы "жадные", то есть захватывают столько, сколько могут захватить (при случае с точкой это будет до конца). Подробности также в МАНе.
<tag> и </tag> - ну тут собственно все понятно, прямое совпадение с текстом
(.*?) - Кроме скобок все описано выше. СОбственно скобки значат что нужно захватить этот субпаттерн (subpattern). В случае с PHP preg_match скажем, это значит что совпадением будет заполнен какраз массив $matches. Ну собственно самое главное, что искали.
DjArf вне форума  
Старый 28.08.2008, 23:02     # 10
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
по краям .* не нужна, т.к. не стоит привязки к началу/концу стринга - соответственно, матч будет в любом месте, и вот такого регэкспа вполне достаточно: #<tag>(.*?)</tag>#
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 29.08.2008, 01:10     # 11
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от Saruman Посмотреть сообщение
по краям .* не нужна, т.к. не стоит привязки к началу/концу стринга - соответственно, матч будет в любом месте
Ага. Так это же и написано:
Цитата:
Сообщение от DjArf Посмотреть сообщение
Если модификаторами шаблон не заякорен (anchored) то можно опустить. На всякий случай привел. Должно и без него быть нормально, в данной ситуации (собственно данных-то маловато что делаете и чем и на чем).
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 31.08.2008, 02:16     # 12
Den+
Newbie
 
Регистрация: 08.07.2004
Сообщения: 14

Den+ Нуль без палочки
главное, чтобы в предварительном "bla-bla-bla" не попалась пара тегов <tag></tag>, а то попадутся в выборке именно они!
Den+ вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 20:42.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.