Ru-Board.club
← Вернуться в раздел «Web-программирование»

» PHP: Регулярные выражения (RegExp, Regular, eregi, preg)

Автор: softsp1
Дата сообщения: 11.05.2010 04:05
Здравствуйте,

подскажите пожалуйста

например есть html-страница вида http://www.ex.ua/view/1253181?r=2,23775

на этой странице есть такой код

Цитата:

        playlist: [
            { url: 'http://fs70.www.ex.ua/show/2288131/2288131.gif?800', duration: 0 }, { url: 'http://www.ex.ua/show/2297639/aeea23dd2a1de31e7f61640615da67b8.flv', autoPlay: false }
        ],



нужно спарсить(получить) с этой страницы, ссылку на .flv файл (т.е. http://www.ex.ua/show/2297639/aeea23dd2a1de31e7f61640615da67b8.flv)

Огромное спасибо за полезные ответы
Автор: AftarJjet
Дата сообщения: 14.05.2010 14:17
Не PHP, но думаю, мне быстрей всего ответят тут. Помогите выполнить поиск и замену.
Есть различные строки, [more=такого]2571,0,2,'',0,'63.97.41.253',1212764165,'kukuruza','kukuruza','$H$7iHWmyCKs2Ep5Im15ia318VaJQxVV81',1212764165,0,'admin@windstream.net',168236198328,'',1231964889,1212764165,0,'viewtopic.php?f=4&t=5632','',1231964447,0,0,0,0,0,0,'en','-5.00',1,'D M d, Y g:i a',5,0,'000000',15,22,1267806946,0,-3,0,0,'t','d',0,'t','a',0,1,0,1,1,1,1,231295,'',0,0,0,'','','','','','','','','','','','','','','12c7965f566f8c9d',0,0,0[/more] вида и [more=такого]5880,0,2,'00000000006xv241hc\ni1cjyo000000\n\n\nq0r652000000\n\nq0r652000000\nqlctzq000000\nq0qzti000000\nq0r652000000\n\n\n\nkeg5w0000000\nq0r652000000\n\nqlctzq000000\nq0r652000000\nq0r652000000\n000000000000\n\n\nq0r652000000\n000000000000\n\n\nq0r652000000\nq0r652000000\nq0r652000000\n\nq0r652000000\n000000000000\n000000000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\n\nq0r652000000\n\n000000000000\n000000000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nqlctzq000000\nq0r652000000\nq0r652000000\nq0r652000000\ni1cjyo000000\ni1cjyo000000\ni1cjyo000000\ni1cjyo000000\ni1cjyo000000\nqlctzq000000\ni1cjyo000000\ni1cjyo000000\n\ni1cjyo000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\n\nq0r652000000\nq0q47q000000\ni1cjyo000000\ni1cjyo000000\ni1cjyo000000\ni1cjyo000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\n000000000000\nq0r652000000\n\n\nkgyl7a000000\nowssly000000\n000000000000\n000000000000\n\ni1cjyo000000\nq0r652000000\nq0r652000000\n\n000000000000\n\n\n\ni1cjyo000000\ni1cjyo000000\nq0r652000000\nq0r652000000\n\n000000000000\n\nq0r652000000\ni1cjyo000000\ni1cjyo000000\nq0r652000000\nq0r652000000\nq0r652000000\nq0r652000000\nlfwn2s000000\n000000000000\nq0r652000000\n\n000000000000\n\ni1cjyo000000\nq0r652000000\nq0r652000000\ni1cjyo000000\nq0r652000000\nq0r652000000\ni1cjyo000000\n\nq0q47q000000\nq0r652000000\ni1cjyo000000\nq0r652000000\nq0r652000000\nq0qaja000000\n\nq0r652000000\nq0qzti000000\nq0qzti000000\nq0r652000000\nq0r652000000\nq0r652000000\ni1cjyo000000\nq0r652000000\nq0r652000000',0,'94.108.242.51',1232393296,'redka','redka','$H$73YXHPd45euI9ywk3z.XNZOc6qYNMk.',1232393296,0,'admin@hotmail.com',338730978620,'',1273733866,1232393296,0,'viewtopic.php?f=4&t=18835','',0,0,0,0,0,0,0,'en','1.00',1,'D M d, Y g:i a',5,0,'000000',0,0,1267795179,0,-3,0,0,'t','d',0,'t','a',0,0,0,0,0,0,1,230271,'',0,0,0,'','','','','','','','','','','','','','','acd4fc70d4c18ca4',0,0,0[/more].
В каждой строке есть константа - $H$, а также расположение символов '.
Мне необходимо строки выше привести в такой вид [more=раз]'kukuruza','kukuruza','$H$7iHWmyCKs2Ep5Im15ia318VaJQxVV81',1212764165,0,'admin@windstream.net'[/more] и [more=два]'redka','redka','$H$73YXHPd45euI9ywk3z.XNZOc6qYNMk.',1232393296,0,'admin@hotmail.com'[/more], или хотя бы пусть [more=так]'$H$7iHWmyCKs2Ep5Im15ia318VaJQxVV81',1212764165,0,'admin@windstream.net',168236198328,'',1231964889,1212764165,0,'viewtopic.php?f=4&t=5632','',1231964447,0,0,0,0,0,0,'en','-5.00',1,'D M d, Y g:i a',5,0,'000000',15,22,1267806946,0,-3,0,0,'t','d',0,'t','a',0,1,0,1,1,1,1,231295,'',0,0,0,'','','','','','','','','','','','','','','12c7965f566f8c9d',0,0,0[/more] (т.е. убрать все символы в строке до константы $H$.
Автор: Mamay
Дата сообщения: 14.05.2010 18:15
softsp1
preg_match('~http://[^:]*?\.flv~is',$str,$match);
AftarJjet
preg_replace('~^(.*)(\$H.*)~','\'$2',$str);

Добавлено:
AftarJjet
даже так
preg_replace('~^(([^,]*),){7}(.*)~','$3',$str);
Автор: kvazigorynich
Дата сообщения: 21.05.2010 19:41
вроде разобрались...
Автор: muk as
Дата сообщения: 26.05.2010 14:52
из значения вида 5_6_2010_21_56_50
выдрать все цифры(перед и\или после знака "_") и каждую поместить в отдельную переменную
т.е.
$a = 5
$b=6
$c=2010
$d=21
$e=56
$f=50
Автор: andead
Дата сообщения: 26.05.2010 15:06
muk as

Код: explode('_', '5_6_2010_21_56_50')
Автор: neznayka3
Дата сообщения: 29.05.2010 21:31

Код: $pattern='#<span class=\"Test\" id=\"Test\">.*<\/span>#is';
echo $pattern;
Автор: andead
Дата сообщения: 29.05.2010 21:37
neznayka3
посмотрите исходный код страницы
Автор: neznayka3
Дата сообщения: 29.05.2010 21:44
В исходном коде все верно.
Автор: Cheery
Дата сообщения: 29.05.2010 22:54
neznayka3

Цитата:
В исходном коде все верно.

ну и? сказали же - страница распознается как HTML поэтому первый тег <span ..> вывелся именно как HTML тег. В коде страницы же нормально показывается? хотите, чтобы виден был и в отображении html страницы, то напишите
echo htmlentities($pattern);
Автор: neznayka3
Дата сообщения: 30.05.2010 01:30
Cheery
разобрался
Автор: neznayka3
Дата сообщения: 30.05.2010 10:57
Поочередно ищу совпадения

Код: $pattern='{<span id=\"test\">(.*)<\/span>}m';
...
$pattern='{<span id=\"test2\">(.*)<\/span>}m';
...
$pattern='{<span id=\"test3\">(.*)<\/span>}m';
...
Автор: Cheery
Дата сообщения: 30.05.2010 21:32
neznayka3

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

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

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

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

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

Автор: ZlydenGL
Дата сообщения: 31.05.2010 10:53
Cheery, а если див выглядит как <div name="mydiv" id="test" style="smth">, то вышеприведенная конструкция ее не схомячит?
Автор: Mamay
Дата сообщения: 31.05.2010 11:19

Цитата:
{<div[^>]*id=\"test\"[^>]*>(.*?)<\/div>}m
Автор: ZlydenGL
Дата сообщения: 31.05.2010 19:55
Mamay, а можешь пояснить, почему (.*?), а не (.*) ?
Автор: Cheery
Дата сообщения: 31.05.2010 21:15
ZlydenGL
потому что *? означает отключение "жадности".. иначе регулярка "захватит" все до последнего </div>
а ()? означает, что то, что в скобках, может быть, а может и нет
если же ваш знак вопроса не относился к регулярке, то читайте только первую строчку
Автор: ZlydenGL
Дата сообщения: 31.05.2010 22:43
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>
Автор: Cheery
Дата сообщения: 01.06.2010 01:27
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
Автор: ZlydenGL
Дата сообщения: 01.06.2010 09:04
Cheery, т.е. если я хочу заполучить только внутренние дивы, мне надо писать так?
{<div[^>]*id=\"test\"[^(div)]*\/div>}m
Или все-таки правильней и быстрее для обработки будет использовать такую конструкцию?
{<div[^>]*id=\"test\"[^(div)]*?\/div>}m

Добавлено:
Точнее, вот так:
{<div[^>]*id=(\"|\'|)test(\"|\'|)[^(div)]*?\/div>}m
Кто его знает, может быть при конкретной обработке обрамляющие кавычки будут одинарными, или их вообще не будет
Автор: XPOMOB_CR
Дата сообщения: 04.06.2010 22:18

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

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

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

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

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












Автор: Cheery
Дата сообщения: 04.06.2010 23:05
XPOMOB_CR
воспользуйтесь
www.php.net/preg_replace_callback
на стандартный виде тегов.. а уже в функции определяйте - нужен он вам или нет
Автор: Clodus
Дата сообщения: 06.06.2010 09:11
Need help!

Имею:

$a="Длинный текст из которого нужно вырезать это слово и несколько символов с обеих сторон";
$b="слово";
echo preg_replace("/(.{0,5})(".$b.")(.{0,5})/is", "...$1 <b>$2</b> $3...", $a);

Хочу получить "... это слово и не...", а получаю:
"Длинный текст из которого нужно вырезать... это слово и не...сколько символов с обеих сторон".
Блуждаю в трех соснах...

Автор: andead
Дата сообщения: 06.06.2010 09:38
"/.*(.{0,5})(".$b.")(.{0,5}).*/is"
Автор: Clodus
Дата сообщения: 06.06.2010 10:02
andead, спасибо!

Результат - "... слово и не..." - проглатывает $1.

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

Но не хочет, зараза, результат поиска по базе правильно отрабатывать.
Автор: TimAlex
Дата сообщения: 07.06.2010 12:54
Уже вынес весь мозг себе....
Имеем очередь печати принтера 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>
Автор: Mamay
Дата сообщения: 07.06.2010 18:03
TimAlex
пару страниц назад - я писал нужную тебе регу
не поленись - почитай тему
Автор: Clodus
Дата сообщения: 08.06.2010 10:00

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


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

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

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


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

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

Автор: DarkSmoke
Дата сообщения: 25.06.2010 14:51
Добрый день.
пишу значит регулярное выражение
if(eregi(("[а-Я]"), $_GET['city'])) echo 'ttttt';
а оно срабатывает если строка така:
вв55ввв
п5пп5
gg76dлол
44аава

Вообщем не работает совсем.

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: Xitami Web Server + PHP+ zend optimizer


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.