IPB

Здравствуйте, гость ( Вход | Регистрация )

> Помогите разобраться, Регулярное выражение
Ernest
сообщение Aug 24 2008, 21:41
IP: 10.10.0.0/16 | Сообщение #1


Пикачу, проголодался
*****

Группа: Members
Сообщений: 882
Регистрация: 20-August 04
Из: Красноярск
Пользователь №: 95



Вес:   4 кг  
Удалено: 18.41%


Код
<cms type="module" name="main" \><cms type="file" name="base.html" \>


Нужно расчленить в массив

[0][0] = <cms type="module" name="main" \>
[0][1] = module
[0][2] = main
- это был первый фрагмент подключения
[1][0] = <cms type="file" name="base.html" \>
[1][1] = file
[1][2] = base.html

Я делал так:
Код
preg_match_all("/<cms type\=.(\w*).+name\=.(\w*\W*\w+).+ \\\>/", $this->html, $matches);

Но вся загвостка в том, что именно два блока <cms рядом это выражение принимает за один!
Помоготие...

---------------24th August 2008 - 22:20-------------

Код
<cms type=\"module\" name=\"main\" \><cms type=\"file\" name=\"base.html\" \>

Так вернее будет

---------------24th August 2008 - 22:41-------------

Код
<cms type\=.(\w*). name\=.(\w*\W*\w+). .>

Вот оно, не красивое, уродливое но выражение...
Если предложите лучше - буду очень рад испытать!

Сообщение отредактировал Ernest - Aug 24 2008, 21:09


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
said
сообщение Sep 5 2008, 23:27
IP: 10.10.0.0/16 | Сообщение #2


++++++++++++++++++++
***

Группа: Members
Сообщений: 223
Регистрация: 25-June 05
Из: г.Новосибирск, ул.Пирогова 14
Пользователь №: 1047



Вес:   2 кг  
Удалено: 18.32%


Цитата(Ernest @ Aug 24 2008, 21:41) *
Код
<cms type="module" name="main" \><cms type="file" name="base.html" \>


Нужно расчленить в массив

[0][0] = <cms type="module" name="main" \>
[0][1] = module
[0][2] = main
- это был первый фрагмент подключения
[1][0] = <cms type="file" name="base.html" \>
[1][1] = file
[1][2] = base.html

Я делал так:
Код
preg_match_all("/<cms type\=.(\w*).+name\=.(\w*\W*\w+).+ \\\>/", $this->html, $matches);

Но вся загвостка в том, что именно два блока <cms рядом это выражение принимает за один!
Помоготие...

---------------24th August 2008 - 22:20-------------

Код
<cms type=\"module\" name=\"main\" \><cms type=\"file\" name=\"base.html\" \>

Так вернее будет

---------------24th August 2008 - 22:41-------------

Код
<cms type\=.(\w*). name\=.(\w*\W*\w+). .>

Вот оно, не красивое, уродливое но выражение...
Если предложите лучше - буду очень рад испытать!


Ну регексы всегда уродливы (а кому-то красивы) кажутся. Меня тут только смущает обратный слеш в конце тега обычно прямой пишут "/".
Знак равенства экранировать не надо.
И непонятно зачем такая подробность ".(\w*\W*\w+)." и в то же время на необходимость в кавычках и последнем слеше не обращается внимание. (ну я люблю перепроверять smile.gif )
По-моему, немного лучше было бы так:
/<cms type=\"(.*)\" name=\"(.*)\" \/>/

\w - мне кажется тоже сильное ограничение, а вдруг цифры и подчёркивания пойдут... smile.gif

Хотя твой вариант вполне хороший.

Вот это было бы страшно (зато очень подробно и работает почти так же быстро):
/<cms\s+type=\"([\w\d_]*)\"\s+name=\"([\w\d_]*\.?[\w\d_]*)\"\s+\/>/

Сообщение отредактировал said - Sep 5 2008, 23:29


--------------------

سيّد علي
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Rambler's Top100
Текстовая версия Сейчас: 15th December 2025 - 17:40
Rambler's Top100