Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

Rendom



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Учебники регулярных выражений
 
Кто сможет составить выражение для такого случая:

Код:
 
<table border=0>
<tr>
   <td>blablablabla<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table></td>
   <td><table border=1><tr><td>blablabla</td></tr></table>666666</td>
</tr
</table>
 

Нужно удалить из этого всего кусок "<table border=0><tr><td>blablabla_UNIQTEXT_blablabla</td></tr></table>". Иными словами нужно вырезать текст от "<table" до "</table>" внутри которого есть строка "UNIQTEXT", но при этом не удалить лишнего. В результате должно получиться:

Код:
 
<table border=0>
<tr>
   <td>blablablabla</td>
   <td><table border=1><tr><td>blablabla</td></tr></table>666666</td>
</tr
</table>
 

Всего записей: 115 | Зарегистр. 27-10-2002 | Отправлено: 23:26 17-05-2005 | Исправлено: AZJIO, 04:05 09-12-2014
ForposT_ForeveR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
ты уже как-то пытался это сделать?  

Честно сказать, даже не знаю с какой стороны подойти

Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 22:44 03-05-2009
EGORR_TOO

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тогда RTFM...
Начни отсюда _http://www.phpclub.ru/detail/article/regexp_1
Там все разжевано. Я тоже регулярок всегда старался избегать.
А тут пришлось. Так эта статья мне здорово помогла в ликвидации моей дремучести.
И ещё чудная книга Фридл Дж. "Регулярные выражения"
На странице автора _http://regex.info есть линк на питерский издательский дом, где её можно заказать.
А скачать её можно... Не буду говорить где, а то модер отшлепает. Буде надо, - стучись в личку.

Всего записей: 59 | Зарегистр. 03-10-2006 | Отправлено: 23:57 03-05-2009
EGORR_TOO

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблему, о которой я писал несколькими постами выше, я по научению уважаемого Cheery решил. Однако возникли сомнения вот какого рода. Передача аргумента функции через массив GLOBAL чревата ошибками. Если два админа сайта начнут обращаться к этой функции, значение global $arr изменит обратившийся к ней позднее. И тогда первый получит ошибочный результат. Вообще черт знает, что может вытвориться.  
Первое что мне пришло в голову, это использовать $_SESSION. Но не будет ли это брешью в безопасности? Или может есть более надежный способ? Или может использовать $$. Но старые, бородатые, мудрые программеры советуют избегать использовать $$.

Всего записей: 59 | Зарегистр. 03-10-2006 | Отправлено: 13:08 05-05-2009
ForposT_ForeveR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте.
Начал изучать регулярные выражения. Пробовал написать код, для реализации идеи (см. пост выше)
 

Цитата:
preg_match_all('#href="?((.*?)/lala/([^>" ]*?))#ims', $html, $arr);

Но, к сожалению, данная строка кода выдаёт не тот результат, который хотелось бы.

Всего записей: 525 | Зарегистр. 11-12-2004 | Отправлено: 12:37 06-05-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EGORR_TOO

Цитата:
Если два админа сайта начнут обращаться к этой функции, значение global $arr изменит обратившийся к ней позднее. И тогда первый получит ошибочный результат. Вообще черт знает, что может вытвориться.

о чем вы??? global распространяется только на данный запуск скрипта, а не на все запущенные копии одновременно.  
 
ForposT_ForeveR

Цитата:
Но, к сожалению, данная строка кода выдаёт не тот результат

примененная к какому тексту?


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 18:35 06-05-2009
Dimonius

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помогите, пожалуйста, из переменной вида /pumpurum_page3452/ получить число после слова page, разрядность числа может быть разной, т.е. и 2 и 24 и т.д.
Спасибо.

Всего записей: 28 | Зарегистр. 23-10-2002 | Отправлено: 12:49 09-05-2009
Crocell

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@Dimonius
 
^/\w+?(\d+)/$  (для preg_match будет выглядеть так: '/^\/\w+?(\d+)\/$/'  )

Всего записей: 329 | Зарегистр. 12-05-2007 | Отправлено: 16:32 09-05-2009 | Исправлено: Crocell, 16:35 09-05-2009
koc



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
есть строки

Код:
 
        'template'    : "/goodsViev.htm",
        'show'    : "yes"
 

 

Код:
 
'template': '/listGoods.htm'
 

 

Код:
 
 "orderBy":'rank'
 

 
нужно их преобразовать к массиву. Как видно кавычки могут быть разные, отступы тоже. Хелп плизз.

Всего записей: 270 | Зарегистр. 04-03-2005 | Отправлено: 14:12 23-05-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koc

Цитата:
нужно их преобразовать к массиву. Как видно кавычки могут быть разные, отступы тоже. Хелп плизз.

split по :  (если не будет в кавычках его)
потом trim и убрать кавычки.. это если в лоб без регулярок
иначе что то вида
preg_match_all("/(\'|\")(\w+)\\1\s*:\s*(\'|\")(.*)\\3/mU",$str,$matches);  

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:51 23-05-2009
koc



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
спасибо, буду пробовать.
Дополнительно вопрос задал тут _http://www.php.ru/forum/viewtopic.php?t=18926
 
зы: возможно будут кавычки в кавычках или двоеточие в кавычках

Всего записей: 270 | Зарегистр. 04-03-2005 | Отправлено: 21:11 23-05-2009 | Исправлено: koc, 21:19 23-05-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koc

Цитата:
зы: возможно будут кавычки в кавычках или двоеточие в кавычках

и? что, регулярка не работает?  
 
ps: одного не пойму - зачем дублировать вопросы в разных форумах. если не ждете от нас помощи, то зачем тут?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:22 23-05-2009 | Исправлено: Cheery, 22:02 23-05-2009
koc



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
так, что б наверняка. Все равно люди с похапе.ру тут врятли бывают. Равно как и наоборот.
 
а предложенная регулярка в онлайн-конструкторе чего-то отказывалась работать.

Всего записей: 270 | Зарегистр. 04-03-2005 | Отправлено: 00:58 24-05-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koc

Цитата:
а предложенная регулярка в онлайн-конструкторе чего-то отказывалась работать.

что такое "онлайн" конструктор и на чем именно не работает?


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:59 24-05-2009
koc



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ну типа вот
 
_http://www.gskinner.com/RegExr/
 
Тестировал на строках, которые запостил выше.

Всего записей: 270 | Зарегистр. 04-03-2005 | Отправлено: 01:51 24-05-2009 | Исправлено: koc, 01:51 24-05-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koc

Цитата:
Тестировал на строках, которые запостил выше.

А попробовать в самом php сложно? вы понимаете, что разные языки имеют разные ньюансы в регулярных выражениях???

Код:
<?php
$str=<<<TXT
  'template'    : "/goodsViev.htm",
      'show'    : "yes"
'template': '/listGoods.htm'
 "orderBy":'rank'  
TXT;
preg_match_all("/(\'|\")(.*)\\1\s*:\s*(\'|\")(.*)\\3/U",$str,$matches);
print_r($matches);
?>  


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:53 24-05-2009 | Исправлено: Cheery, 02:01 24-05-2009
koc



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
да, действительно работает, спасибо.
 
Я думал, что регулярки - они и в африке регулярки. По работе не часто с ними сталкиваюсь.
 
Еще раз спасибо.

Всего записей: 270 | Зарегистр. 04-03-2005 | Отправлено: 11:13 24-05-2009
StudioMaX



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть строки
 

Код:
<td class="lista" align="center" style="padding-left:10px;"><a href="index.php@page=main&id=8"><span style='color:#f28282'>Text1</span> <img src='images/5552.gif'></a></td>
 
<td class="lista" align="center" style="padding-left:10px;"><a href="index.php@page=main&id=11464"><span style='color:#006699'>Text2</span> <img src='images/6874.gif'></a></td>
 
<td class="lista" align="center" style="padding-left:10px;"><a href="index.php@page=main&id=1680"><span style='color:#01C499'>Text3</span> <img src='images/1562.gif'></a></td>
 

 
каким выражением можно отсюда получить Text1, Text2 и Text3 ?

Всего записей: 10 | Зарегистр. 22-03-2008 | Отправлено: 15:44 03-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StudioMaX
 preg_match_all("/span[^>]*>(.*)<\/span>/iU",$str,$matches);  

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:04 03-06-2009
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите, как тире разрешить?
ТОлько тире по одному, что бы не было два подрят.

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 20:51 14-06-2009 | Исправлено: DarkSmoke, 20:52 14-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke

Цитата:
Подскажите, как тире разрешить?

для начала, как и говорил, сформулировать вопрос полностью, с примерами.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:52 14-06-2009
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Регулярные выражения (RegExp, Regular, eregi, preg)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru