Реклама на сайте Advertise with us

Подскажите регулярное выражение.

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Ninja ZX-6R

С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906


Передовик Master-X (01.02.2008) Передовик Master-X (16.02.2008) Передовик Master-X (01.03.2008) Передовик Master-X (16.03.2008) Передовик Master-X (01.04.2008) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/01/08 в 09:41       Ответить с цитатойцитата 

Задумал тут кое-что на php для личных нужд, и уперся в регулярные выражения.

Есть html, в html-е есть ссылки на пикчи
Код:
<a href="bla-bla/bla-bla.jpg">

Нужно выделить "bla-bla/bla-bla.jpg", при чем "bla-bla/bla-bla.jpg" может быть:
1.Полный урл "http://bla-bla.com/bla/bla-bla.jpg"
2.Относительно "bla-bla/bla-bla.jpg"
3.Имя самого файла может быть
Код:
[A-Za-z0-9]*\.jpg


Везде могут встречатся символы "-" и "_" еще...
Нужно выделить путь до файла и имя файла, так как они указаны в теге.

Вообщем голову уже сломал...
smail27.gif подскажите плиз...

0
 



С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430

Ссылка на сообщениеДобавлено: 05/01/08 в 09:45       Ответить с цитатойцитата 

/<a href=\"(.*)\">/

4
 

Ninja ZX-6R

С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906


Передовик Master-X (01.02.2008) Передовик Master-X (16.02.2008) Передовик Master-X (01.03.2008) Передовик Master-X (16.03.2008) Передовик Master-X (01.04.2008) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/01/08 в 09:48       Ответить с цитатойцитата 

Код:
/<a href=\"(.*\.jpg)\">/


Ага, спасибо, вот модификация котороя заработала для моих условий=)

Может пригодиццо кому потом, функция дергающая урлы до пиксов в фхг.
Код:
<?php
$fhg_url="s.txt";

function img_links ($page){
   $page = implode('',@file($page));
   if(!preg_match_all("/<a href=\"(.*\.jpg)\">/",$page,$url_list))
       { return error; }
   $link = array();
       foreach ($url_list as $url_temp){
           foreach ($url_temp as $urla){
              if(!preg_match("~href~i",$urla)
                 and !preg_match("~javascript~i",$urla)
                 and !preg_match("~mailto~i",$urla)
                 and !preg_match("~#~i",$urla)){
                 $link[] = $urla;
                }
            }
         }
     return $link;
   }

   
$links = img_links("$fhg_url");
    //ссылки на печать
if ($links != 'error'){
      while(list($key, $val) = @each ($links)){
            print "$key.  $val <br>\n";
           }
  }

?>


написано не мной, а спижжено и переделано онлиicon_smile.gif

0
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 05/01/08 в 13:10       Ответить с цитатойцитата 

Во-первых регулярное выражение не верно. Почему ? Домашнее задание.
Во-вторых алгоритм уродский как раз потому, что регулярное выражение не верно.

4
 

Ninja ZX-6R

С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906


Передовик Master-X (01.02.2008) Передовик Master-X (16.02.2008) Передовик Master-X (01.03.2008) Передовик Master-X (16.03.2008) Передовик Master-X (01.04.2008) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/01/08 в 13:16       Ответить с цитатойцитата 

ну х.з. уродско или не уродско, работает все, совпадения где надо.остальное пох пока, мне же не для выставкиicon_smile.gif , алгоритм просто спижжен с учебников по php, поменял только регулярное выражение в preg_match_all.

Предложи верный вариант, скажу спасибо только. а домашнее задание... так не буду я штудировать книгу по регуляркам ради одного выражения, у меня и так от них голова болит...

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 05/01/08 в 13:20       Ответить с цитатойцитата 

"/<a[^>]+href=\"?([^\"\r\n\t ]*?\.jpg)\"?/ism"

Мое выражение будет находить а твое нет такие вещи:

<a class="blah"
href="qwe/a.jpg"

<A HREF="qwe/blah.jpg"

<A HREF="qwe/blah.JPG"

<A HREF=qwe/blah.JPG

4
 

Ninja ZX-6R

С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906


Передовик Master-X (01.02.2008) Передовик Master-X (16.02.2008) Передовик Master-X (01.03.2008) Передовик Master-X (16.03.2008) Передовик Master-X (01.04.2008) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/01/08 в 13:26       Ответить с цитатойцитата 

тоже верно, но пока попробовал фхг 10-ти спонсоров, нигде таких извратов не было слава богу, схавал и полные урлы и относительные, все правильно, но на всякий случай запишу и этот, спасибоicon_smile.gif

0
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 05/01/08 в 13:33       Ответить с цитатойцитата 

Pentarh писал:
"/<a[^>]+href=\"?([^\"\r\n\t ]*?\.jpg)\"?/ism"

<ambahref="blablabla.jpg"> - это сылка по-твоему ?

4
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 05/01/08 в 13:37       Ответить с цитатойцитата 

А какой долбоеб будет такое вставлять в код? Даже если вставит, он наверняка будет иметь ввиду тег А

4
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 05/01/08 в 13:40       Ответить с цитатойцитата 

Не нужно отвечать за долбоебов. Надо отвечать за себя и правильно писать программы. icon_smile.gif

4
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 05/01/08 в 13:51       Ответить с цитатойцитата 

Ну есть серъезное различие между понятиями "правильность" и "целесообразность".

Программисты очень часто ебут время, нервы и моск ради первого понятия, принебрегая вторым icon_smile.gif

мое решение целесообразно. Потрать три часа, напиши правильный регексп и он будет работать так же как мой а виртуальные баги типа как ты привел вряд ли вообще когда нибудь проявятся icon_smile.gif

4
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 05/01/08 в 14:11       Ответить с цитатойцитата 

Ты привел каноническое рассуждение недоученных программистов. Просто эталон.
В падлу расписывать все столпы ламерства на которые оно упирается. А упирается оно НА ВСЕ столпы. Ни одного не пропущено.

4
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 05/01/08 в 14:17       Ответить с цитатойцитата 

А ты не привел тут нихуя а только пиздишь не по теме icon_smile.gif

Пока ты чесал языком люди предложили уже три решения. Это и есть различие между твоей правильностью и нашей целесообразностью, товарищ "не-ламер" icon_smile.gif

4
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 05/01/08 в 14:30       Ответить с цитатойцитата 

Ни "одно" из того что предложили не является решением. Так что тут только языками и чешут. Я не сильно от вас отстал.

4
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 05/01/08 в 14:36       Ответить с цитатойцитата 

Ну еще до меня человек сказал что граббер работает. Пусть на 60%, но _работает_, делает свое дело и даже возможно приносит бабло.

Я сейчас в некой степени прожект манагер и меня кумарит вот это качество в программерах ))

Сука, до потери пота будет доказывать свою правоту в то время как компания теряет бабло и ей нужно хоть какое то, пусть баговое, но быстрое временное решение.

4
 



С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 05/01/08 в 18:07       Ответить с цитатойцитата 

А хорошее решение компании не нужно ? Тогда пусть держат таких как ты.

4
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 05/01/08 в 19:07       Ответить с цитатойцитата 

Ну, так ты выложишь нам свое супер-решение или так и дальше пиздеть будешь? icon_smile.gif

4
 

Ninja ZX-6R

С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906


Передовик Master-X (01.02.2008) Передовик Master-X (16.02.2008) Передовик Master-X (01.03.2008) Передовик Master-X (16.03.2008) Передовик Master-X (01.04.2008) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/01/08 в 22:13       Ответить с цитатойцитата 

Еще раз напишу, решение РАБОТАЕТ, перепробовал уже на куче fhg, глюков нет, пусть оно неправильное, но оно РАБОТАЕТ, остальное мне похую. icon_smile.gif
Sha Дай правильное решение, или подскажи , намекни, ветка не для писько-меряний вроде icon_smile.gif
Pentarh
Цитата:
"правильность" и "целесообразность"
+1

0
 



С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430

Ссылка на сообщениеДобавлено: 05/01/08 в 22:21       Ответить с цитатойцитата 

Sha ) ты цену себе набиваешь ) мы с утра просгулись ответили у человека все работает он рад, дети рады, взрослые рад ) что еще надо то ) миру мир

4
 



С нами с 25.08.06
Сообщения: 78
Рейтинг: 33

Ссылка на сообщениеДобавлено: 06/01/08 в 02:00       Ответить с цитатойцитата 

между прочим занятная тема!

я бы предложил вот такую прегу

/<a(\b[^>]*)\bhref=\"([a-z0-9_-]*\.(jpg|gif|png))\">/i

(\b[^>]*)\b - отловит весь мусор типа class=blablabla... \b нужны чтобы не ловились некорректные тэги типа <aclass или <amba

([a-z0-9_-]*\.(jpg|gif|png)) - собсно субпатерн отлавливающий картинку. в скобках можно поставить любой набор расширений

/i - регистронезависимость(вдруг кто-нибудь jPg файлы будет заливать)

в итоге в массиве получаем элементы 1) мусор 2) картинку(с расширением ессно) 3) само расширение

может кто добавит\исправит?

а это точно поможет? спросила Царевна-несмеяна осторожно затягиваясь...

4
 



С нами с 03.10.04
Сообщения: 154
Рейтинг: 49

Ссылка на сообщениеДобавлено: 10/01/08 в 16:23       Ответить с цитатойцитата 

я так картинки отлавливаю
preg_match_all('{<img\s[^>]*src=(["\']?)(.*?)(?:\1|\s|>)}is',$gde,$kuda);

адрес в $kuda[2][$i]

тоже мучился пока не придумал :)

второй вариант должен работать быстрей , но непроверял, а тот который верху работает
preg_match_all('{<img\s[^>]*src=(["\']?)(.*?)[\1\s>]}is',$gde,$kuda);

5
 



С нами с 03.10.04
Сообщения: 154
Рейтинг: 49

Ссылка на сообщениеДобавлено: 10/01/08 в 16:45       Ответить с цитатойцитата 

а по сылкам можно так

preg_match_all('{<a\s[^>]*href=(["\']?)(.*?\.(?:gif|jpe?g|bmp|png))[\1\s>]}is',$gde,$kuda);

если только джепеги:
preg_match_all('{<a\s[^>]*href=(["\']?)(.*?\.jpe?g)[\1\s>]}is',$gde,$kuda);

5
 

Ninja ZX-6R

С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906


Передовик Master-X (01.02.2008) Передовик Master-X (16.02.2008) Передовик Master-X (01.03.2008) Передовик Master-X (16.03.2008) Передовик Master-X (01.04.2008) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 10/01/08 в 22:53       Ответить с цитатойцитата 

dвсе записал ребяты, +5

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »