Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Модификаторы #isU
 
 автор: dima_s_d_s   (28.10.2006 в 19:28)   письмо автору
 
 


<html>
<DIV  style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px"> <P align=center><A href="http://love.in-alushta.ru/news_5575.html"><STRONG>Читать далее</STRONG> [10]</A></P></DIV>
</ntml>


Вот так будет правельно:

<?
if (preg_match_all ("#<.{1,2} DIV style='PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px'><P align=center><a href='([^']*)'><STRONG>(.*)</STRONG></a></p></div>#isU"$text$regs)) 
?>


и что тут означает #isU ?

   
 
 автор: ЯR   (28.10.2006 в 20:02)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 19:28)
 

i -- не учитывать регистр букв
s -- чтобы работало при переносе строки
U -- инверсия "жадности" (чтобы реагировал не первый закрывающий тег)

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:06)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:02)
 

Сенкс.
А где можно почитать?

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:07)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:02)
 

а преобразование я сделал правильно?


<? 
if (preg_match_all ("#<.{1,2} DIV style='PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px'><P align=center><a href='([^']*)'><STRONG>(.*)</STRONG></a></p></div>#isU"$text$regs))  
?> 

   
 
 автор: ЯR   (28.10.2006 в 20:10)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 20:07)
 

а зачем нужно ".{1,2}"?
А так, вроде, всё верно

   
 
 автор: ЯR   (28.10.2006 в 20:12)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:10)
 

можно так:

<?  
if (preg_match_all ("#<div style='[^']*'><p align=center><a href='([^']*)'><STRONG>(.*)</STRONG></a></p></div>#isU"$text$regs))   
?> 

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:14)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:10)
 


<?  
if (preg_match_all ("#<DIV style='PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px'><P align=center><a href='([^']*)'><STRONG>(.*)</STRONG></a></p></div>#isU"$text$regs))   
?>  


Просто я ещё не дописал, а ".{1,2}" буду дальше использовать.
Хотел пока эту часть нормально написать.
Будет работать?

   
 
 автор: ЯR   (28.10.2006 в 20:15)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 20:14)
 

> Будет работать?
должно

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:19)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:15)
 

ещё раз
на сайте есть вот такой код

<DIV  style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px"> <P align=center><A href="http://love.in-alushta.ru/news_5575.html"><STRONG>Читать далее</STRONG> [10]</A></P></DIV> 


Если я напишу :

if (preg_match_all ("#<DIV style='PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px'><P align=center><a href='([^']*)'><STRONG>(.*)</STRONG></a></p></div>#isU", $text, $regs))   


то данные того кода будут находиться в $text. Так ?
А если так, как мне их вывести?

   
 
 автор: ЯR   (28.10.2006 в 20:23)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 20:19)
 

$text - код на сайте
в массив $regs будут помешены рег.выр. в скобках
$regs[0] = '<DIV style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px"> <P align=center><A href="http://love.in-alushta.ru/news_5575.html"><STRONG>Читать далее</STRONG> [10]</A></P></DIV> '
$regs[1] = 'http://love.in-alushta.ru/news_5575.html'
$regs[2] = 'Читать далее'

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:25)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:23)
 

Сенкс. Попробую!

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:38)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:23)
 

что-то не так. не хочет выводить!

   
 
 автор: ЯR   (28.10.2006 в 20:46)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 20:38)
 

после кода напиши

print '<pre>';
print_r($regs);
print '</pre>';

и посмотри, что там в массиве

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:50)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:46)
 

сек. гляну

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:51)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:46)
 

вот
Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) )

   
 
 автор: ЯR   (28.10.2006 в 20:54)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 20:51)
 

ща попробую сам

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:56)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:54)
 

только я сайт для примера указал а на самом деле там другой адрес!

   
 
 автор: ЯR   (28.10.2006 в 21:02)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 20:56)
 

у меня так работает:

<?php
$text 
'<DIV  style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px"> <P align=center><A href="http://love.in-alushta.ru/news_5575.html"><STRONG>Читать далее</STRONG> [10]</A></P></DIV>';
if (
preg_match_all('#<DIV  style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px"> <P align=center><A href="([^"]*)"><STRONG>(.*)</STRONG> \[10\]</A></P></DIV>#isU'$text$regs));
print 
'<pre>'
print_r($regs); 
print 
'</pre>';
?>

   
 
 автор: dima_s_d_s   (28.10.2006 в 21:16)   письмо автору
 
   для: ЯR   (28.10.2006 в 21:02)
 

Да так работат. Тогда я пока так по тестирую. А потом если что-то будет не ясно напишу.
Сенкс за помощ !

   
 
 автор: dima_s_d_s   (29.10.2006 в 14:08)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 21:16)
 

у меня проблема с пробелами!

<?php 
$text 
'<DIV  style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px"> <P align=center><A href="http://love.in-alushta.ru/news_5575.html"><STRONG>Читать далее</STRONG> [10]</A></P></DIV>'
if (
preg_match_all('#<DIV  style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px"> <P align=center><A href="([^"]*)"><STRONG>(.*)</STRONG> \[10\]</A></P></DIV>#isU'$text$regs)); 
print 
'<pre>';  
print_r($regs);  
print 
'</pre>'
?> 


если там добавить пробелы! то не работает. Как можно не учитывать пробелы?

   
 
 автор: ЯR   (29.10.2006 в 14:14)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 14:08)
 


<?php  
$text 
'<DIV  style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px"> <P align=center><A href="http://love.in-alushta.ru/news_5575.html"><STRONG>Читать далее</STRONG> [10]</A></P></DIV>';  
if (
preg_match_all('#<DIV[\s+]style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px">[\s*]<P[\s+]align=center><A[\s+]href="([^"]*)">[\s*]<STRONG>(.*)</STRONG>[\s*]\[10\]</A>[\s*]</P>[\s*]</DIV>#isU'$text$regs));  
print 
'<pre>';   
print_r($regs);   
print 
'</pre>';  
?> 

примерно так (везде, где могут быть пробелы замени на [\s*])

   
 
 автор: dima_s_d_s   (29.10.2006 в 14:36)   письмо автору
 
   для: ЯR   (29.10.2006 в 14:14)
 

А если там нет пробела и я поставил [\s*] то тоже не работает!
Как быть?

   
 
 автор: ЯR   (29.10.2006 в 15:20)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 14:36)
 

сорри.
Я ошибся! не [\s*] и [\s+], а [\s]* и [\s]+

   
 
 автор: dima_s_d_s   (29.10.2006 в 14:50)   письмо автору
 
   для: ЯR   (29.10.2006 в 14:14)
 

Вот структура там по ходу есть и конец строки


<?
<DIV 
            style
="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; LINE-HEIGHT: 13px; PADDING-TOP: 7px; BACKGROUND-COLOR: #f7f7f7"><
            title
="Еу &amp; Ter 7s" 
            
href="http://love.in-alushta.ru/news_5575.html">
            <
H3>Der &ampter Airs 
            030
</H3></A><FONT color=#999999>[</FONT><A title="Love d" 
            
href="http://in-alushta.ru/news-1.html">news</A><FONT 
            color
=#999999>] от </FONT><A title="tre" 
            
href="http://in-alushta/modules.php?name=Feedback&amp;to=tre">ter</A></DIV>
?>


Я просто на этом примере тренируюсь (изучаю) регуляные выражения.
Пока я хочу взять всё что находиться до


<?
...
</
A><FONT color=#999999>[</FONT><A title="Love d" 
            
href="http://in-alushta.ru/news-1.html">news</A><FONT 
            color
=#999999>] от </FONT><A title="tre" 
            
href="http://in-alushta/modules.php?name=Feedback&amp;to=tre">ter</A></DIV>

?>


вот эту часть:

<?
<DIV 
            style
="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; LINE-HEIGHT: 13px; PADDING-TOP: 7px; BACKGROUND-COLOR: #f7f7f7"><
            title
="Еу &amp; Ter 7s" 
            
href="http://love.in-alushta.ru/news_5575.html">
            <
H3>Der &ampter Airs 
            030
</H3></A>
...
?>

   
 
 автор: dima_s_d_s   (29.10.2006 в 15:31)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 14:50)
 

а [\s]* и [\s]+ непонял как их использовать

   
 
 автор: ЯR   (29.10.2006 в 15:35)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 15:31)
 

если в коде есть место, где может быть пробел (или несколько), то в шаблоне на этом месте пиши [\s]* (если там не менее 1 пробела, то [\s]+)

   
 
 автор: ЯR   (29.10.2006 в 15:44)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 14:50)
 

примерно так:


<?php
// $text -- текст
preg_match('|<DIV[\s]+style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; LINE-HEIGHT: 13px; PADDING-TOP: 7px; BACKGROUND-COLOR: #f7f7f7">[\s]*<A[\s]+title="([^"]*)"[\s]*href="([^"])*">[\s]*<H3>(.*)</H3></A>|isU'$text$regs);
?>

$regs[0] -- должно быть то, что надо

   
 
 автор: dima_s_d_s   (29.10.2006 в 16:06)   письмо автору
 
   для: ЯR   (29.10.2006 в 15:44)
 

Супер всё получилось.

вот код


<?
if (preg_match_all('#<div[\s]+style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; LINE-HEIGHT: 13px; PADDING-TOP: 7px; BACKGROUND-COLOR: \#f7f7f7">[\s]*<A[\s]+title="(.*)" [\s]+ href="([^"]*)">[\s]+<h3>(.*)</h3>[\s]*</A>#isU'$text$regs)); 
?>


Только если $text="http://адрес сайта/"; то не работат
может сайт не так надо открывать?

   
 
 автор: ЯR   (29.10.2006 в 16:33)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 16:06)
 

Не так. Это вы просто текст http://адрес сайта переменной присвоили, а надо файл прочитать:

<?php
$text 
file_get_contents('http://adres-saita/');
?>

   
 
 автор: dima_s_d_s   (29.10.2006 в 17:42)   письмо автору
 
   для: ЯR   (29.10.2006 в 16:33)
 

а если конец строки то мне просто поставить $

да?
А конец строки и абзац, это одно и тоже?

   
 
 автор: ЯR   (29.10.2006 в 17:47)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 17:42)
 

да, если ты про рег. выражение,
а начало строки -- ^ (не путать с ^ в скобках ([^>]))

   
 
 автор: dima_s_d_s   (29.10.2006 в 18:15)   письмо автору
 
   для: ЯR   (29.10.2006 в 17:47)
 

Только что переписал под нужный сайт. И работает! Супер. Но на этом я не буду останавливаться. Ещё много чего надо сделать.

Спасибо за помощь. С этого форума я больше узнал информации, чем со всего инета. Прикольно. Я немного научился работать с выражениями.

Я буду продвигаться дальше и если что непонятно то напишу.

Еще раз спасибо за помощь.

   
 
 автор: ЯR   (29.10.2006 в 18:57)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 18:15)
 

Да.
На этом форуме уже наверно несколько поколений программеров выучилось

   
 
 автор: dima_s_d_s   (29.10.2006 в 19:23)   письмо автору
 
   для: ЯR   (29.10.2006 в 18:57)
 

Единственное что на этом форуме хотелось бы добавить это сообщение об ответе на мыло!

   
 
 автор: ЯR   (29.10.2006 в 19:47)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 19:23)
 

предложи это админам (Хеопс, Кузницов, Дизайнер) в разделе Разное,
если согласятся, могу и сам написать

   
 
 автор: dima_s_d_s   (29.10.2006 в 20:12)   письмо автору
 
   для: ЯR   (29.10.2006 в 19:47)
 

А почему тебя в аське нету?

   
 
 автор: dima_s_d_s   (29.10.2006 в 20:28)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 20:12)
 

Что означает это выражение:



<?
...

"`<td(?:.+)>(.+)</td>`isU"
...
?>


Кто может опишите что к чему!

   
 
 автор: ЯR   (29.10.2006 в 21:38)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 20:28)
 

Скорее всего это описание типа:
Тег td, содержащий не менее одного символа (т.е. "(.+)"), имеющий не менее одного символа в параметрах тега ("<td(?:.+)>").
Хотя не уверен, т.к. не знаю, что может значить "?:" в скобках

   
 
 автор: dmitrii_r   (29.10.2006 в 23:06)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 20:28)
 

(?: - означает, что скобку эту не надо запоминать.

   
 
 автор: ЯR   (30.10.2006 в 06:23)   письмо автору
 
   для: dmitrii_r   (29.10.2006 в 23:06)
 

спасибо, буду знать.
Но не понимаю, зачем тогда эта скобка вообще нужна, если её можно заменить на ".+"

   
 
 автор: ЯR   (29.10.2006 в 21:32)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 20:12)
 

Ща буду

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования