Гражданин планеты Земля
С нами с 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 |
т.е. с пробелами и с/без закрывающих кавычек/апострофов
|
|
|
|
С нами с 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>';
?> |
результат:
|
|
|
|
Гражданин планеты Земля
С нами с 30.03.03
Сообщения: 7217
Рейтинг: 2185
|
Добавлено: 28/07/07 в 15:29 |
Пасибо. Доработал, получилось это
Код: | /<a.*?href\s*=[\s\"\']*([^\s\"\']*).*?>(.*?)<\/\s*a\s*>/i |
делает именно то что нужно - вытаскивает урл и содержимое линки.
|
|
|
|
Гражданин планеты Земля
С нами с 30.03.03
Сообщения: 7217
Рейтинг: 2185
|
Добавлено: 05/08/07 в 22:05 |
Еще одно затруднение... есть 4 варианта:
во всех 4-х случаях после применения регулярного выражения должно остаться
http://www.gallery-domain.com/path/galleries/142
пока есть такое регулярное выражение (http[^\?]*), получает:
а (http.*)\/, получает:
|
|
|
|
С нами с 08.03.05
Сообщения: 114
Рейтинг: 118
|
Добавлено: 06/08/07 в 03:08 |
(http[^\?]*?\/?)(\?.*)?([^\/]+\.(html|php|cgi|pl|asp))?$
нужный результат в первых скобках
|
|
|
|
Гражданин планеты Земля
С нами с 30.03.03
Сообщения: 7217
Рейтинг: 2185
|
Добавлено: 06/08/07 в 12:42 |
|
|
|
|
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]
|
|
|
|
С нами с 08.03.05
Сообщения: 114
Рейтинг: 118
|
Добавлено: 06/08/07 в 19:39 |
2localhost
имхо
ты не можешь знать количества слешей
а для каждого конкретного случая менять регексп не выход
|
|
|
|
127.0.0.1
С нами с 26.04.06
Сообщения: 1092
Рейтинг: 557
|
Добавлено: 06/08/07 в 22:20 |
объясняю:
пхпшная реализация регэкспов по шаблону
"http:\/\/.+\/.+\/"
означает что нужно найти все строки где в начале:
"http://"
а в конце "/"
при этом в промежутке между ними может быть как минимум один символ "/" и как минимум два любых символа.
поэтому под этот регэксп попадают урлы где есть как минимум 2 символа "/"
|
|
|
|
С нами с 08.03.05
Сообщения: 114
Рейтинг: 118
|
Добавлено: 07/08/07 в 10:15 |
2localhost
DelGod писал: | ты не можешь знать количества слешей |
просто проверь свой регексп на следующем списке
|
|
|
|
С нами с 23.06.07
Сообщения: 27
Рейтинг: 23
|
Добавлено: 08/08/07 в 01:19 |
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |