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

Снова регулярка

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

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 14/04/09 в 15:01       Ответить с цитатойцитата 

Нужно выдернуть из страницы всё похожее на урл в котором есть знак вопроса.
Сделал вот так - но бывает вместо урла встречается код страницы до знака вопроса.
Код:
/http:\/\/(.*?\?.*?)[^\'\"><]*/i

хелп

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 16.10.06
Сообщения: 56
Рейтинг: 259

Ссылка на сообщениеДобавлено: 14/04/09 в 15:42       Ответить с цитатойцитата 

Регексы бывают greedy (жадные) и non-greedy (соответственно нежадные). Жадные захватывают максимум из того, что могут, нежадные - минимум. По умолчанию обычно они жадны, что мы здесь и наблюдаем. Для полного ответа на вопрос желательно знать язык. Мне кажется, или это пхп? Там жадность отключается ключом //U.

8
 



С нами с 16.10.06
Сообщения: 56
Рейтинг: 259

Ссылка на сообщениеДобавлено: 14/04/09 в 15:44       Ответить с цитатойцитата 

А, поспешил с ответом. .*? это и есть нежадный, но хз, это расширенный синтаксис, он не везде работает.

8
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 14/04/09 в 15:45       Ответить с цитатойцитата 

это пхп
жадность действительно не причем

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 16.10.06
Сообщения: 56
Рейтинг: 259

Ссылка на сообщениеДобавлено: 14/04/09 в 15:49       Ответить с цитатойцитата 


Да, проверил, таки ни при чем. А пример покажи, где захватывается больше чем надо?

8
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 14/04/09 в 16:09       Ответить с цитатойцитата 

Код:
http://blabla.com/list">http://babla.com/list</a><br/><br/>blabla <font size=1><a href="mailto:admin ]at[blabla.com?
его захватывает целиком до знака вопроса

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 16.10.06
Сообщения: 56
Рейтинг: 259

Ссылка на сообщениеДобавлено: 14/04/09 в 16:33       Ответить с цитатойцитата 

Я бы написал так:
Код:

    $test = array('http://blabla.com/list">http://bla-bla.com/list?a=b</a><br/><br/>admin ]at[blabla.com?ddd',
        'noturl http://blabla.com/list http://bla-bla.com/list?a=b',
        'noturl http://blabla.com/list http://bla-bla.com/list?a=b notend',
        'noturl http://blabla.com/list http://bla-bla.com/list?a=b notend http://another-url2.com/list?query');

    $re = '/http:\/\/([^\'\"><\s]+\?[^\'\"><\s]*)/is';

    foreach($test as $t)
    {
        print "test: '$t'\n";
        preg_match_all($re, $t, $r);
        foreach($r[1] as $match) print "match: $match\n";
    }


Код:

# ./test.php
test: 'http://blabla.com/list">http://bla-bla.com/list?a=b</a><br/><br/>admin ]at[blabla.com?ddd'
match: bla-bla.com/list?a=b
test: 'noturl http://blabla.com/list http://bla-bla.com/list?a=b'
match: bla-bla.com/list?a=b
test: 'noturl http://blabla.com/list http://bla-bla.com/list?a=b notend'
match: bla-bla.com/list?a=b
test: 'noturl http://blabla.com/list http://bla-bla.com/list?a=b notend http://another-url2.com/list?query'
match: bla-bla.com/list?a=b
match: another-url2.com/list?query

8
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 15/04/09 в 12:39       Ответить с цитатойцитата 

Огромное спасибо за помощь. То что доктор прописал.
Если я правильно понял регулярка:
Код:
$re = '/http:\/\/([^\'\"><\s]+\?[^\'\"><\s]*)/is';

Из подобного кода:
Код:
<font color="red">http://www.blabla.com/cgi/action.cgi?id=164</font><br>
.....
">http://blabla.com?id=albalb</a><br/>

выдергивает любую последовательность символов заключенную (в данном случае) между > и < где встерчается знак ? причем берет до первого встречающегося символа в квадратных скобках иначе просто не берет?

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 16.10.06
Сообщения: 56
Рейтинг: 259

Ссылка на сообщениеДобавлено: 15/04/09 в 12:53       Ответить с цитатойцитата 

Ну в общем да. Там могут быть еще какие-то засады правда, мне не очень нравится вот это [^\'\"><\s], лучше все же задавать символы, которые "могут быть", а не которые "не могут", меньше вероятность, что что-то пойдет не так. Можно там жестко прописать что-то вроде [\w\/-]+, короче, надо пробовать.

8
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 15/04/09 в 12:57       Ответить с цитатойцитата 

ага спасибки еще раз!
счас на большом количестве прогоню - посмотрю - если будут сбои попробую видоизменить...

п.с. а я надо сказать по незнанию думал, что для того, что бы указать произвольную последовательность символов нужно обязательно прописывать .*? icon_neutral.gif

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 16.10.06
Сообщения: 56
Рейтинг: 259

Ссылка на сообщениеДобавлено: 15/04/09 в 13:03       Ответить с цитатойцитата 

Lamagro писал:

п.с. а я надо сказать по незнанию думал, что для того, что бы указать произвольную последовательность символов нужно обязательно прописывать .*? icon_neutral.gif

.*? или .+? - это таки произвольная последовательность, но нежадная. Жадная - просто .* или .+
Я правда думал что в пхп по умолчанию синтаксис .*? не работает вообще, и можно задавать жадность только на уровне всего регекса. Оказалось работает.

Adult Web Art Team :D

8
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 15/04/09 в 13:14       Ответить с цитатойцитата 

icon_wink.gif
ну еще раз биг сенкс - надо матчасть учить icon_smile.gif

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 

SexBlogs.Name

С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962

Ссылка на сообщениеДобавлено: 15/04/09 в 13:17       Ответить с цитатойцитата 

как самоучке местами понимания/знания не хватает

Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!

0
 



С нами с 17.05.09
Сообщения: 6
Рейтинг: 8

Ссылка на сообщениеДобавлено: 17/05/09 в 10:39       Ответить с цитатойцитата 

2ts стукни плз не могу до тебя достучаться

8
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 17/05/09 в 21:16       Ответить с цитатойцитата 

В топике рядом приводил регексп для URLа

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

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


Перейти:  



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

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

Опросы

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



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