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

Ищется помощь по регулярному выражению

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

Гражданин планеты Земля

С нами с 30.03.03
Сообщения: 7217
Рейтинг: 2185

Ссылка на сообщениеДобавлено: 28/07/07 в 14:30       Ответить с цитатойцитата 

необходимо вдрать http://www.url.com/path_to_file/file.dat из
Код:
<a href =  "   http://www.url.com/path_to_file/file.dat    " style="color:#FFFFFF; font-size:17px; font-weight: bold;"     >LINK_TEXT</ a >


Пока застрял на этом
Код:
/<a.*?=(.*?)>(.*?)<\/\s*a\s*>/i

вытаскивает
Код:
"   http://www.url.com/path_to_file/file.dat    " style="color:#FFFFFF; font-size:17px; font-weight: bold;"     


Необходимо найти регулярку учитывающую href вида
Код:
href =  "   http://www.url.com/path_to_file/file.dat    "
href =  '   http://www.url.com/path_to_file/file.dat    '
href =     http://www.url.com/path_to_file/file.dat   
href=http://www.url.com/path_to_file/file.dat

т.е. с пробелами и с/без закрывающих кавычек/апострофов

Гыыы

0
 



С нами с 03.07.07
Сообщения: 50
Рейтинг: 100

Ссылка на сообщениеДобавлено: 28/07/07 в 14:55       Ответить с цитатойцитата 

Код:
<?php
$str = '<a href =  "   http://www.url.com/path_to_file/file.dat    " >
<a href =  \'   http://www.url.com/path_to_file/file.dat2    \'>
<a href =     http://www.url.com/path_to_file/file.dat3    >
<a href=http://www.url.com/path_to_file/file.dat4>
<a href =  "   http://www.url.com/path_to_file/file.dat5    " style="color:#FFFFFF; font-size:17px; font-weight: bold;"     >LINK_TEXT</ a >';

$reg = '~<a.*?href\s*=[\s"\']*([^\s>]+)~is';
preg_match_all($reg, $str, $out);
print '<pre>';print_r($out[1]);print '</pre>';
?>


результат:
Код:
Array
(
    [0] => http://www.url.com/path_to_file/file.dat
    [1] => http://www.url.com/path_to_file/file.dat2
    [2] => http://www.url.com/path_to_file/file.dat3
    [3] => http://www.url.com/path_to_file/file.dat4
    [4] => http://www.url.com/path_to_file/file.dat5
)

8
 

Гражданин планеты Земля

С нами с 30.03.03
Сообщения: 7217
Рейтинг: 2185

Ссылка на сообщениеДобавлено: 28/07/07 в 15:29       Ответить с цитатойцитата 

Пасибо. Доработал, получилось это
Код:
/<a.*?href\s*=[\s\"\']*([^\s\"\']*).*?>(.*?)<\/\s*a\s*>/i

делает именно то что нужно - вытаскивает урл и содержимое линки.

Гыыы

0
 

Гражданин планеты Земля

С нами с 30.03.03
Сообщения: 7217
Рейтинг: 2185

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

Гыыы

0
 



С нами с 08.03.05
Сообщения: 114
Рейтинг: 118

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

8
 

Гражданин планеты Земля

С нами с 30.03.03
Сообщения: 7217
Рейтинг: 2185

Ссылка на сообщениеДобавлено: 06/08/07 в 12:42       Ответить с цитатойцитата 

DelGod писал:

(http[^\?]*?\/?)(\?.*)?([^\/]+\.(html|php|cgi|pl|asp))?$
нужный результат в первых скобках
Код:

http://www.gallery-domain.com/path/galleries/142/
http://www.gallery-domain.com/path/galleries/142/
http://www.gallery-domain.com/path/galleries/142/
http://www.gallery-domain.com/path/galleries/142


спасибо, чуть дополнил (http[^\?]*?)\/?(\?.*)?([^\/]+\.(html|htm|php|cgi|pl|asp)(\?.*)?)?$
для варианта http://www.gallery-domain.com/path/galleries/142/index.html?var1=value1&var2=value2,
и чтоб вырезался последний слеш в первых трех результатах

Гыыы

0
 

127.0.0.1

С нами с 26.04.06
Сообщения: 1092
Рейтинг: 557

Ссылка на сообщениеДобавлено: 06/08/07 в 16:26       Ответить с цитатойцитата 

все намного проще:

Код:

$str='<a href =  "   http://www.url.com/path_to_file/file.dat    " style="color:#FFFFFF; font-size:17px; font-weight: bold;"     >LINK_TEXT</ a >
<a    href=    "   http://www.gallery-domain.com/path/galleries/142/?var1=value1&var2=value2"    >  test </a>
';


preg_match_all("/<a.{0,40}href=(\"|')(http:\/\/.+\/.+\/)(.*)(\"|\'|>)/Usi",$ereg_replace(" +",'',$str),$tmp);



результат в $tmp[2]

май пен рай

0
 



С нами с 08.03.05
Сообщения: 114
Рейтинг: 118

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

2localhost
имхо
ты не можешь знать количества слешей
а для каждого конкретного случая менять регексп не выход

0
 

127.0.0.1

С нами с 26.04.06
Сообщения: 1092
Рейтинг: 557

Ссылка на сообщениеДобавлено: 06/08/07 в 22:20       Ответить с цитатойцитата 



объясняю:
пхпшная реализация регэкспов по шаблону
"http:\/\/.+\/.+\/"

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

поэтому под этот регэксп попадают урлы где есть как минимум 2 символа "/"

май пен рай

0
 



С нами с 08.03.05
Сообщения: 114
Рейтинг: 118

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

0
 



С нами с 23.06.07
Сообщения: 27
Рейтинг: 23

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

Попробуй так:
Код:

<?
$str='http://www.gallery-domain.com/path/dir1/dir2/galleries/142/index.html
http://www.gallery-domain.com/path/dir1/dir2/galleries/142/?var1=value1&var2=value2
http://www.gallery-domain.com/path/dir1/dir2/galleries/142/
http://www.gallery-domain.com/path/dir1/dir2/galleries/142
http://www.gallery-domain.com/galleries142/index.html
http://www.gallery-domain.com/galleries142/?var1=value1&var2=value2
http://www.gallery-domain.com/galleries142/
http://www.gallery-domain.com/galleries142 ';
$reg = '/^(http:\/\/.*?)[\/\s]*([\/][^\/]*[\.\?]+[^\/]*)?$/ism';
preg_match_all($reg, $str, $matches);
echo "<pre>";
print_r($matches);
echo "</pre>";
?>

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

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


Перейти:  



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

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

Опросы

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



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