Ninja ZX-6R
С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906
|
Добавлено: 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.Имя самого файла может быть
Везде могут встречатся символы "-" и "_" еще...
Нужно выделить путь до файла и имя файла, так как они указаны в теге.
Вообщем голову уже сломал...
подскажите плиз...
|
|
|
|
С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430
|
Добавлено: 05/01/08 в 09:45 |
/<a href=\"(.*)\">/
|
|
|
|
Ninja ZX-6R
С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906
|
Добавлено: 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";
}
}
?> |
написано не мной, а спижжено и переделано онли
|
|
|
|
С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950
|
Добавлено: 05/01/08 в 13:10 |
Во-первых регулярное выражение не верно. Почему ? Домашнее задание.
Во-вторых алгоритм уродский как раз потому, что регулярное выражение не верно.
|
|
|
|
Ninja ZX-6R
С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906
|
Добавлено: 05/01/08 в 13:16 |
ну х.з. уродско или не уродско, работает все, совпадения где надо.остальное пох пока, мне же не для выставки , алгоритм просто спижжен с учебников по php, поменял только регулярное выражение в preg_match_all.
Предложи верный вариант, скажу спасибо только. а домашнее задание... так не буду я штудировать книгу по регуляркам ради одного выражения, у меня и так от них голова болит...
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 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
|
|
|
|
Ninja ZX-6R
С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906
|
Добавлено: 05/01/08 в 13:26 |
тоже верно, но пока попробовал фхг 10-ти спонсоров, нигде таких извратов не было слава богу, схавал и полные урлы и относительные, все правильно, но на всякий случай запишу и этот, спасибо
|
|
|
|
С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950
|
Добавлено: 05/01/08 в 13:33 |
Pentarh писал: | "/<a[^>]+href=\"?([^\"\r\n\t ]*?\.jpg)\"?/ism"
|
<ambahref="blablabla.jpg"> - это сылка по-твоему ?
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 05/01/08 в 13:37 |
А какой долбоеб будет такое вставлять в код? Даже если вставит, он наверняка будет иметь ввиду тег А
|
|
|
|
С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950
|
Добавлено: 05/01/08 в 13:40 |
Не нужно отвечать за долбоебов. Надо отвечать за себя и правильно писать программы.
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 05/01/08 в 13:51 |
Ну есть серъезное различие между понятиями "правильность" и "целесообразность".
Программисты очень часто ебут время, нервы и моск ради первого понятия, принебрегая вторым
мое решение целесообразно. Потрать три часа, напиши правильный регексп и он будет работать так же как мой а виртуальные баги типа как ты привел вряд ли вообще когда нибудь проявятся
|
|
|
|
С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950
|
Добавлено: 05/01/08 в 14:11 |
Ты привел каноническое рассуждение недоученных программистов. Просто эталон.
В падлу расписывать все столпы ламерства на которые оно упирается. А упирается оно НА ВСЕ столпы. Ни одного не пропущено.
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 05/01/08 в 14:17 |
А ты не привел тут нихуя а только пиздишь не по теме
Пока ты чесал языком люди предложили уже три решения. Это и есть различие между твоей правильностью и нашей целесообразностью, товарищ "не-ламер"
|
|
|
|
С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950
|
Добавлено: 05/01/08 в 14:30 |
Ни "одно" из того что предложили не является решением. Так что тут только языками и чешут. Я не сильно от вас отстал.
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 05/01/08 в 14:36 |
Ну еще до меня человек сказал что граббер работает. Пусть на 60%, но _работает_, делает свое дело и даже возможно приносит бабло.
Я сейчас в некой степени прожект манагер и меня кумарит вот это качество в программерах ))
Сука, до потери пота будет доказывать свою правоту в то время как компания теряет бабло и ей нужно хоть какое то, пусть баговое, но быстрое временное решение.
|
|
|
|
С нами с 11.06.03
Сообщения: 1266
Рейтинг: 950
|
Добавлено: 05/01/08 в 18:07 |
А хорошее решение компании не нужно ? Тогда пусть держат таких как ты.
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 05/01/08 в 19:07 |
Ну, так ты выложишь нам свое супер-решение или так и дальше пиздеть будешь?
|
|
|
|
Ninja ZX-6R
С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906
|
Добавлено: 05/01/08 в 22:13 |
Еще раз напишу, решение РАБОТАЕТ, перепробовал уже на куче fhg, глюков нет, пусть оно неправильное, но оно РАБОТАЕТ, остальное мне похую.
Sha Дай правильное решение, или подскажи , намекни, ветка не для писько-меряний вроде
Pentarh Цитата: | "правильность" и "целесообразность" |
+1
|
|
|
|
С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430
|
Добавлено: 05/01/08 в 22:21 |
Sha ) ты цену себе набиваешь ) мы с утра просгулись ответили у человека все работает он рад, дети рады, взрослые рад ) что еще надо то ) миру мир
|
|
|
|
С нами с 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);
|
|
|
|
С нами с 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);
|
|
|
|
Ninja ZX-6R
С нами с 19.06.05
Сообщения: 1713
Рейтинг: 906
|
Добавлено: 10/01/08 в 22:53 |
dвсе записал ребяты, +5
|
|
|
|