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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
neznayka3

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

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 02:30 30-05-2010
neznayka3

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

Код:
$pattern='{<span id=\"test\">(.*)<\/span>}m';
...
$pattern='{<span id=\"test2\">(.*)<\/span>}m';
...
$pattern='{<span id=\"test3\">(.*)<\/span>}m';
...
Как объединить паттерны в один? Между ними могут быть любые символы, знаки табуляции и тд.
Есть много дивов

Код:
<div id="...">
    <div id="test">
        <div id="...">
            <div id="...">
                ....
            </div>
        </div>
    </div>
</div>
Как вытащить определенный див с содержимым(id="test")?

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 11:57 30-05-2010
Cheery



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

Цитата:
Как объединить паттерны в один? Между ними могут быть любые символы, знаки табуляции и тд.

{<span id=\"test\d?\">(.*)<\/span>}m

Цитата:
Как вытащить определенный див с содержимым(id="test")?

вы же уже написали сами выше

Цитата:
{<div id=\"test\">(.*?)<\/div>}m



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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:32 30-05-2010 | Исправлено: Cheery, 22:32 30-05-2010
ZlydenGL



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, а если див выглядит как <div name="mydiv" id="test" style="smth">, то вышеприведенная конструкция ее не схомячит?

----------
Переработал: втыкая аккумулятор в шуруповерт пытаешься передёрнуть затвор

Всего записей: 4264 | Зарегистр. 22-06-2002 | Отправлено: 11:53 31-05-2010
Mamay



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

Цитата:
{<div[^>]*id=\"test\"[^>]*>(.*?)<\/div>}m


----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 12:19 31-05-2010
ZlydenGL



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mamay, а можешь пояснить, почему (.*?), а не (.*) ?

----------
Переработал: втыкая аккумулятор в шуруповерт пытаешься передёрнуть затвор

Всего записей: 4264 | Зарегистр. 22-06-2002 | Отправлено: 20:55 31-05-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZlydenGL
потому что *? означает отключение "жадности".. иначе регулярка "захватит" все до последнего </div>
а ()? означает, что то, что в скобках, может быть, а может и нет  
если же ваш знак вопроса не относился к регулярке, то читайте только первую строчку

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:15 31-05-2010 | Исправлено: Cheery, 22:16 31-05-2010
ZlydenGL



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, просто хочу уточнить. Правильно ли я понял, что при основной конструкции

Код:
<div id="text">content0<div id="text">content1</div>
<div id="text">content2</div>
<div id="text">content3</div>
<div id="text">content4</div>
</div>
 

регексп .* вернет ВСЕ дивы внутри "корневого" дива, а регексп .*? вернет каждый див в отдельности?

----------
Переработал: втыкая аккумулятор в шуруповерт пытаешься передёрнуть затвор

Всего записей: 4264 | Зарегистр. 22-06-2002 | Отправлено: 23:43 31-05-2010
Cheery



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

Цитата:
регексп .* вернет ВСЕ дивы внутри "корневого" дива, а регексп .*? вернет каждый див в отдельности?

нет..  
.* вернет  
content0<div id="text">content1</div>  
<div id="text">content2</div>  
<div id="text">content3</div>  
<div id="text">content4</div>  
 
и .*? вернет
content0<div id="text">content1

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:27 01-06-2010
ZlydenGL



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, т.е. если я хочу заполучить только внутренние дивы, мне надо писать так?
{<div[^>]*id=\"test\"[^(div)]*\/div>}m  
Или все-таки правильней и быстрее для обработки будет использовать такую конструкцию?  
{<div[^>]*id=\"test\"[^(div)]*?\/div>}m  
 
Добавлено:
Точнее, вот так:
{<div[^>]*id=(\"|\'|)test(\"|\'|)[^(div)]*?\/div>}m  
Кто его знает, может быть при конкретной обработке обрамляющие кавычки будут одинарными, или их вообще не будет

----------
Переработал: втыкая аккумулятор в шуруповерт пытаешься передёрнуть затвор

Всего записей: 4264 | Зарегистр. 22-06-2002 | Отправлено: 10:04 01-06-2010
XPOMOB_CR

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

Здравствуйте.

Вопрос: Как из текста удалить все BB-коды, кроме разрешенных?

На другом форуме уже задавал, но вопрос все ещё не решен:

http://phpclub.ru/talk/showthread.php?s=&threadid=88631&perpage=20&pagenumber=12

http://phpclub.ru/talk/showthread.php?postid=902100#post902100













Всего записей: 2 | Зарегистр. 04-06-2010 | Отправлено: 23:18 04-06-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPOMOB_CR
воспользуйтесь  
www.php.net/preg_replace_callback
на стандартный виде тегов.. а уже в функции определяйте - нужен он вам или нет

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:05 05-06-2010
Clodus

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Need help!
 
Имею:
 
$a="Длинный текст из которого нужно вырезать это слово и несколько символов с обеих сторон";
$b="слово";
echo preg_replace("/(.{0,5})(".$b.")(.{0,5})/is", "...$1 <b>$2</b> $3...", $a);
 
Хочу получить "... это слово и не...", а получаю:
"Длинный текст из которого нужно вырезать... это слово и не...сколько символов с обеих сторон".
Блуждаю в трех соснах...
 

Всего записей: 3 | Зарегистр. 06-06-2010 | Отправлено: 10:11 06-06-2010
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
"/.*(.{0,5})(".$b.")(.{0,5}).*/is"

----------
мой блог

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 10:38 06-06-2010 | Исправлено: andead, 10:39 06-06-2010
Clodus

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andead, спасибо!
 
Результат - "... слово и не..." - проглатывает $1.
 
Убрал жадность на $1 - сработало:  
"/.*?(.{0,5})(".$b.")(.{0,5}).*/is"
 
Но не хочет, зараза, результат поиска по базе правильно отрабатывать.

Всего записей: 3 | Зарегистр. 06-06-2010 | Отправлено: 11:02 06-06-2010
TimAlex



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уже вынес весь мозг себе....
Имеем очередь печати принтера HTML страничку с таким кодом:

Код:
 
<TABLE class=dataTable border=0 cellSpacing=0 cellPadding=0>
        <THEAD>
        <TR class=captionRow>
          <TH style="WHITE-SPACE: nowrap" class=checkboxCell width="3%"><INPUT  
            id=selectAll title="Выбрать все"  
            onclick="javascript:selectJob('selectAll')" type=checkbox  
            name=selectAll></TH>
          <TH style="WHITE-SPACE: nowrap" width="3%">Предварительный  
          просмотр</TH>
          <TH style="WHITE-SPACE: nowrap" class=sortable><A  
            title="Упорядочить по имени (по убыванию)"  
            href="http://172.16.1.80/hp/device/webAccess/index.htm?content=job_queue&amp;op=desc_file">Имя  
            файла</A></TH>
          <TH style="WHITE-SPACE: nowrap" class=sortedDescending><A  
            title="Упорядочить по состоянию (по убыванию)"  
            href="http://172.16.1.80/hp/device/webAccess/index.htm?content=job_queue&amp;op=asc_status">Состояние</A></TH>
          <TH style="WHITE-SPACE: nowrap" class=sortable><A  
            title="Упорядочить по странице (по убыванию)"  
            href="http://172.16.1.80/hp/device/webAccess/index.htm?content=job_queue&amp;op=desc_pages">Страницы</A></TH>
          <TH style="WHITE-SPACE: nowrap" class=sortable><A  
            title="Упорядочить по копиям (по убыванию)"  
            href="http://172.16.1.80/hp/device/webAccess/index.htm?content=job_queue&amp;op=desc_copies">Копии</A></TH>
          <TH style="WHITE-SPACE: nowrap" class=sortable><A  
            title="Упорядочить по дате (по убыванию) "  
            href="http://172.16.1.80/hp/device/webAccess/index.htm?content=job_queue&amp;op=desc_date">Дата</A></TH>
          <TH style="WHITE-SPACE: nowrap" class=sortable><A  
            title="Упорядочить по имени пользователя (по убыванию)"  
            href="http://172.16.1.80/hp/device/webAccess/index.htm?content=job_queue&amp;op=desc_user">Пользователь</A></TH></TR></THEAD>
        <TBODY>
        <TR>
          <TD style="WHITE-SPACE: nowrap" class=checkboxCell><LABEL  
            class=hidden for=selectedJobId_pos1>Графики.pdf Установите этот  
            флажок для выбора задания</LABEL><INPUT id=selectedJobId_pos1  
            onclick="javascript:selectJob('selectedJobId_pos1')" value=985  
            type=checkbox name=selectedJobId_pos1></TD>
          <TD style="WHITE-SPACE: nowrap" align=middle><A  
            title="Щелкните для предварительного просмотра задания"  
            href="javascript:launchJobOp2('check_preview_action','985')"><IMG  
            border=0 alt="Щелкните для предварительного просмотра задания"  
            align=absMiddle  
            src="HP%20Designjet%20Z6100%2042in1%20-%20Очередь%20заданий_files/icon_enlarge_16.gif"></A></TD>
          <TD style="WHITE-SPACE: nowrap"><A  
            title="Щелкните, чтобы просмотреть свойства задания"  
            href="javascript:launchJobOp2('jobProps_action','985')">Графики.pdf</A></TD>
          <TD style="WHITE-SPACE: nowrap" class=sorted title=""><IMG alt=""  
            align=absMiddle  
            src="HP%20Designjet%20Z6100%2042in1%20-%20Очередь%20заданий_files/icon_status_normal.gif">&nbsp;&nbsp;отпечатано</TD>
          <TD style="WHITE-SPACE: nowrap">1</TD>
          <TD style="WHITE-SPACE: nowrap">1</TD>
          <TD style="WHITE-SPACE: nowrap">31.05.10 17:28</TD>
          <TD style="WHITE-SPACE: nowrap">gan</TD></TR>
        <TBODY>
        <TR>
          <TD style="WHITE-SPACE: nowrap" class=checkboxCell><LABEL  
            class=hidden  
            for=selectedJobId_pos2>(021)ОБМ.pdf  
            Установите этот флажок для выбора задания</LABEL><INPUT  
            id=selectedJobId_pos2  
            onclick="javascript:selectJob('selectedJobId_pos2')" value=983  
            type=checkbox name=selectedJobId_pos2></TD>
          <TD style="WHITE-SPACE: nowrap" align=middle><A  
            title="Щелкните для предварительного просмотра задания"  
            href="javascript:launchJobOp2('check_preview_action','983')"><IMG  
            border=0 alt="Щелкните для предварительного просмотра задания"  
            align=absMiddle  
            src="HP%20Designjet%20Z6100%2042in1%20-%20Очередь%20заданий_files/icon_enlarge_16.gif"></A></TD>
          <TD style="WHITE-SPACE: nowrap"><A  
            title="Щелкните, чтобы просмотреть свойства задания"  
            href="javascript:launchJobOp2('jobProps_action','983')">(021)ОБМ.pdf</A></TD>
          <TD style="WHITE-SPACE: nowrap" class=sorted title=""><IMG alt=""  
            align=absMiddle  
            src="HP%20Designjet%20Z6100%2042in1%20-%20Очередь%20заданий_files/icon_status_normal.gif">&nbsp;&nbsp;отпечатано</TD>
          <TD style="WHITE-SPACE: nowrap">1</TD>
          <TD style="WHITE-SPACE: nowrap">2</TD>
          <TD style="WHITE-SPACE: nowrap">31.05.10 17:27</TD>
          <TD style="WHITE-SPACE: nowrap">vvv</TD></TR>
        <TBODY>
        <TR>
          <TD style="WHITE-SPACE: nowrap" class=checkboxCell><LABEL  
            class=hidden for=selectedJobId_pos3>Графики 25.05.2010.xls Установите этот  
            флажок для выбора задания</LABEL><INPUT id=selectedJobId_pos3  
            onclick="javascript:selectJob('selectedJobId_pos3')" value=981  
            type=checkbox name=selectedJobId_pos3></TD>
          <TD style="WHITE-SPACE: nowrap" align=middle><A  
            title="Щелкните для предварительного просмотра задания"  
            href="javascript:launchJobOp2('check_preview_action','981')"><IMG  
            border=0 alt="Щелкните для предварительного просмотра задания"  
            align=absMiddle  
            src="HP%20Designjet%20Z6100%2042in1%20-%20Очередь%20заданий_files/icon_enlarge_16.gif"></A></TD>
          <TD style="WHITE-SPACE: nowrap"><A  
            title="Щелкните, чтобы просмотреть свойства задания"  
            href="javascript:launchJobOp2('jobProps_action','981')">Графики 25.05.2010.xls</A></TD>
          <TD style="WHITE-SPACE: nowrap" class=sorted title=""><IMG alt=""  
            align=absMiddle  
            src="HP%20Designjet%20Z6100%2042in1%20-%20Очередь%20заданий_files/icon_status_normal.gif">&nbsp;&nbsp;отпечатано</TD>
          <TD style="WHITE-SPACE: nowrap">1</TD>
          <TD style="WHITE-SPACE: nowrap">1</TD>
          <TD style="WHITE-SPACE: nowrap">31.05.10 16:47</TD>
          <TD style="WHITE-SPACE: nowrap">pe_n</TD></TR>
<TD  
      style="WHITE-SPACE: nowrap">pos_sss</TD></TR></TBODY></TABLE>
 

 
ни как не могу из этого выдернуть наименование задания... и тд
то есть надо получить :
 
Графики.pdf    1   1   31.05.10 17:28 gan
 
просто в коде так много хлама (

Всего записей: 34 | Зарегистр. 05-04-2006 | Отправлено: 13:54 07-06-2010
Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
TimAlex
пару страниц назад - я писал нужную тебе регу
не поленись - почитай тему


----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 19:03 07-06-2010
Clodus

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

Цитата:
Убрал жадность на $1 - сработало:  
"/.*?(.{0,5})(".$b.")(.{0,5}).*/is"

 
Мистика. Если ставлю {0,5} - нормально вырезает, а если {0,7} дает пустое значение. Текст большой, html в нем удален. От пробелов и прочего не зависит.

Всего записей: 3 | Зарегистр. 06-06-2010 | Отправлено: 11:00 08-06-2010 | Исправлено: Clodus, 11:01 08-06-2010
XPOMOB_CR

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

//продолжаю про удаление BBкода

с тегами типа  [bx]текст[/bx] и [bx=jjj]текст[/bx]  - не получается сделать поддержку вложенных одинаковых тегов (например [e]текст1[e]текст2[/e]текст3[/e] ) (с не вложенными или разными разобрался).


а вот с простыми (не закрытыми [тег] и [тег=sssss] ) тегами что-то вообще ничего не получается

что-то типа этого нужно, но это не работает:
 echo preg_replace_callback('!\[(.*)\](.*)[^\[/\1\]]!Uis','ReplaceCallback',$text);


Всего записей: 2 | Зарегистр. 04-06-2010 | Отправлено: 09:10 10-06-2010
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день.
пишу значит регулярное выражение
if(eregi(("[а-Я]"), $_GET['city'])) echo 'ttttt';
а оно срабатывает если строка така:  
вв55ввв
п5пп5
gg76dлол
44аава
 
Вообщем не работает совсем.

----------
Абонентское обслуживание и ремонт компьютеров в Днепропетровске

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 15:51 25-06-2010 | Исправлено: DarkSmoke, 19:37 25-06-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 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