Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: ПХП. Нужен регексп  (Прочитано 13831 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 12-07-2005 04:43 » 

Хорошо знающих регулярные выражения прошу о помощи Ага
есть у меня два каталога хтмл файлов из которых мне нужно вытащить определённую строку. Из одного каталога такую :
Код:
<span class="label">Любой текст переменной величины</span>
а из другого такую :
Код:
<a class="detail_email" href="javascript:emailpage('какой-то_урл_адрес')">my@email.com</a>

Сделал бы вручную, да страниц таких очень много Улыбаюсь
« Последнее редактирование: 15-12-2007 16:23 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
PantiL
Гость
« Ответ #1 : 12-07-2005 06:17 » 

Первая строка будет соответствовать следующему регулярному выражению
Код:
'<span class="label">[[:alnum:]]*</span>'
А во второй "какой-то урл" меняться будет?
« Последнее редактирование: 15-12-2007 16:24 от Алексей1153++ » Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #2 : 12-07-2005 06:30 » 

А во второй "какой-то урл" меняться будет?
Да, всегда разный будет, но всегда вида :
Код:
href="javascript:emailpage('index.php-page=detail&action=email&id=1DE0EE10-94B8-11D6-B572-00E0299BD066&aid=blabla@bla.com.htm'/*tpa=http://www.url.com/index.php?page=detail&action=email&id=1DE0EE10-94B8-11D6-B572-00E0299BD066&aid=blabla@bla.com*/);"
« Последнее редактирование: 15-12-2007 16:25 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 12-07-2005 09:34 » 

<span class="label">Любой текст переменной величины</span>
/<span class="label">([^<]*)<\/span>/is
На выходе текст между тегами.

<a class="detail_email" href="javascript:emailpage('какой-то_урл_адрес')">my@email.com</a>
/<a class="detail_email" href="javascript:emailpage\('([^']*)'\)">(^[^<]*)<\/a>/is
На выходе два значения: url и текст между тегами.

« Последнее редактирование: 15-12-2007 16:26 от Алексей1153++ » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #4 : 13-07-2005 04:32 » 

RXL, огромный сенькс Улыбаюсь
Вот знаю что надо учить регекспы, а всё ленюсь Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #5 : 20-07-2005 06:25 » 

Чёй то вот это :   /<a class="detail_email" href="javascript:emailpage\('([^']*)'\)">(^[^<]*)<\/a>/is  не отрабатывает Жаль
Как правильно подставить это в preg_match_all ? Кавычки тут и двойные и одинарные есть. И если я, подставляя это выражение как стринг в функцию, использую слэши дополнительные, то ессесно не срабатывает регексп Жаль
« Последнее редактирование: 15-12-2007 16:26 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #6 : 20-07-2005 09:27 » 

http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html описание джавовских рег. выражений - мне помогает (как справочник)
Записан

Удачного всем кодинга! -=x[PooH]x=-
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 20-07-2005 20:27 » 

Опечатка вышла - "^" затесалась.
Внутри кавычек можно вводить кавычки того же типа, но со слешем. Дрессеровке поддаются и одинарные и двойные.

Код:
<?php

$text
="<a class=\"detail_email\" href=\"javascript:emailpage(&#39;какой-то_урл_адрес&#39;)\">my@email.com</a>";

preg_match("/<a class=\"detail_email\" href=\"javascript:emailpage\(&#39;([^&#39;]*)&#39;\)\">([^<]*)<\/a>/is",$text,$a);

print 
join(&#39; * &#39;,$a);

?>
« Последнее редактирование: 15-12-2007 16:27 от Алексей1153++ » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #8 : 21-07-2005 04:52 » 

RXL, благодарю Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 21-07-2005 10:08 » 

Соотв., если в строке возможно больше одной искомой последовательности, то используется preg_match_all().
preg_match_all($regexp, $text, $a, PREG_SET_ORDER);
http://www.php.net/manual/ru/function.preg-match-all.php
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #10 : 21-07-2005 10:35 » new

Соотв., если в строке возможно больше одной искомой последовательности, то используется preg_match_all().
preg_match_all($regexp, $text, $a, PREG_SET_ORDER);
http://www.php.net/manual/ru/function.preg-match-all.php
Спасибо за ссылку, но в ней нет необходимости Улыбаюсь Я это уже успел прочитать и использовать Ага
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines