|
|
|
| Всем добрый день помогите разобратся в этом ужасе:
preg_match_all("/<[Aa][ \r\n\t]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\n\r\t]*([^ \"'>\r\n\t#]+)[^>]*>/",$buf,$url);
как образуется шаблон поиска и что обозначают все эти значки
С уваженеим Сергей1 | |
|
|
|
|
|
|
|
для: doberman364
(28.11.2005 в 02:23)
| | Это называется регулярное выражение. | |
|
|
|
|
|
|
|
для: doberman364
(28.11.2005 в 02:23)
| | Это регулярное выражение ищет ссылки (<a href=http://...>) и извлекает адреса (http://...), однако не самым лучшим способом.
PS Регулярным выражениям у нас посвящён отдельный форум. | |
|
|
|
|
|
|
|
для: cheops
(28.11.2005 в 14:11)
| | однако не самым лучшим способом.
Я бы хуже не придумал... :) | |
|
|
|
|
|
|
|
для: Евгений Петров
(28.11.2005 в 17:35)
| | будь добр подскажи как сделать по уму , да еще так чтобы можно была вставить переменную в каторой записан определенный адрес, короче чтобу искались все ссылки на одном сайте!!!
С уваженеим Сергей! | |
|
|
|
|
|
|
|
для: doberman364
(28.11.2005 в 17:55)
| | Если стоит задача вырезать все ссылки из текста, то можно сделать примерно так:
<?
$str = "Некоторый текст с сылками типа http://url.ru или www.com.ru ну или http://somehost.ru";
if(preg_match_all("/((http:\/\/)|(www.))([^ ]+)/i",$str,$regs))
{
echo "<pre>";
foreach($regs[2] as $num => $value)
echo $value.$regs[3][$num].$regs[4][$num]."\n";
}
?>
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(28.11.2005 в 18:13)
| | данное вырожение ищет только сам текст http: а мне нодо чтобы отбиралась все ссылка целиком
С уваженеим Сергей! | |
|
|
|
|
|
|
|
для: doberman364
(28.11.2005 в 19:36)
| | Т.е. сылки? | |
|
|
|
|
|
|
|
для: Евгений Петров
(28.11.2005 в 19:43)
| | на странице содержатся ссылки <a href="туда">название для туда</a> , так вот выражение
("/<[Aa][ \r\n\t]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\n\r\t]*([^ \"'>\r\n\t#]+)[^>]*>/")
отбирает их все , а мне надо модифицировать выражение чтобы отбирались все ссылки только на заданом сайте, т.е. (туда ) должно задоватся переменной причем на одном сайте все страници
http://www.softtime.ru/forum/answer.php?id_forum=6&id_theme=9845&id_post=57345-ПОДХОДИТ
http://www.softtime.ru/forum/пропропаоапоапоапо-ПОДХОДИТ
http://www.softtime.ru/прапрвапрварарва-ПОДХОДИТ
http://www.pekc.net - НЕ ПОДХОДИТ
С УВАЖЕНЕИМ СЕРГЕЙ | |
|
|
|
|
|
|
|
для: doberman364
(28.11.2005 в 19:53)
| | Лучше отталкиваться от модифицированного регулярного выражения, так выражение
"|/<a[^>]*href[^=]*=['\"\s]*([^\"'>]+)['\"\s]*[^>]*>|is"
|
эквивалентно вышеприведённому, для подстановки домена можно использовать следующее выражение
"|/<a[^>]*href[^=]*=['\"\s]*(http://www\.softtime\.ru[^\"'>]+)['\"\s]*[^>]*>|is"
|
| |
|
|
|
|
|
|
|
для: cheops
(28.11.2005 в 20:22)
| | не работает не первый вариант не второй , сопадений ноль а у примера который я даю
на dska.ru
http://www.dska.ru/arm.htm http://www.dska.ru/insh.htm http://www.dska.ru/dok.htm http://www.dska.ru/dop.htm http://www.dska.ru/mos.htm http://www.dska.ru/rus.htm http://www.dska.ru/str.htm http://dska.ru/delit.php http://www.modul.ru http://www.ddgroup.ru/ http://villa.dska.ru http://dska.ru/rest http://dska.ru/rest.htm http://dska.ru/designer.htm http://dska.ru/anscot.htm http://bars-x.ru http://aqua-m.ru http://dska.ru/germabutil.htm http://dska.ru/as.htm http://dska.ru/dom.htm http://dska.ru/mag.htm http://dska.ru/nov.htm http://dska.ru/inv.htm http://dska.ru/stroi.htm http://www.centre-a-stroy.ru/ http://www.nor-dom.ru http://click.hotlog.ru/?168993 http://click.hotlog.ru/?168993 http:// http://u5431.39.spylog.com/cnt?cid=543139&f=3&p=0 http://top.mail.ru/jump?from=667220 http://top.mail.ru/jump?from=667220 http://www.domovoi.ru/?host=173 http://www.kvartirant.ru http://top.doski.ru/?id=940 http://www.directrix.ru/?sid=39434 | |
|
|
|
|
|
|
|
для: doberman364
(28.11.2005 в 21:13)
| | впрочем "|/<a[^>]*href[^=]*=|is" результат тоже нулевой
С уважением Сергей | |
|
|
|
|
|
|
|
для: doberman364
(28.11.2005 в 21:20)
| | что обозначает [ '\"\n\r\t]*([^ \"'>\r\n\t#]
С уваженеим Сергей | |
|
|
|
|
|
|
|
для: doberman364
(28.11.2005 в 21:32)
| | [ '\"\n\r\t] - один символ: либо пробел, либо перевод строки, либо возврат каретки, либо табуляция, либо одинарная кавычка, либо двойная кавычка;
[ '\"\n\r\t]* - любое число указанных символов, в том числе и 0
[^ \"'>\r\n\t#] - любой символ кроме пробела, двойной или одинарной кавычки, возврата каретки, перевода строки, символа табуляции и диеза #. Символ строго один, так как нет модификатора *, +, ?. | |
|
|
|
|
|
|
|
для: doberman364
(28.11.2005 в 21:13)
| | Стоп. Давайте озвучим задачу. Осущетсвляется поиск в тексте приведённом выше http:// или всё-таки ссылок вида <a href=... >. Поэтому лучше сразу отталкиваться от образца - приведённый выше текст являтеся образцом? Если нет, то где образец - дайте точную ссылку, если не сложно. | |
|
|
|
|
|
|
|
для: cheops
(29.11.2005 в 00:33)
| | Общей задачей скрипта является составление карты сайта , т.е скрипт ищет все ссылки на первой странице переходит по первой из них ищет там все сылки и т.д. только он пытается составить карту всего интернета , а мне надо что бы он не выходил за пределы указанного сайта.
Исходное выражение вот
preg_match_all("/<[Aa][ \r\n\t]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\n\r\t]*([^ \"'>\r\n\t#]+)[^>]*>/",$buf,$url);
С уваженеим Сергей ! | |
|
|
|
|
|
|
|
для: doberman364
(29.11.2005 в 14:40)
| | выражение
preg_match_all("/<[Aa][ \r\n\t]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\n\r\t]*([^ \"'>\r\n\t#]*)dska[^>]*>/",$buf,$url);
отбирает нужное но выводит строки почемуто не целиком вот так
http://www. http://www. http://www. http://www. http://www. http://www. http://www. http:// http://villa. http:// http:// http:// http:// http:// http:// http:// http:// http:// http:// http://
С уважением Сергей! | |
|
|
|
|
|
|
|
для: doberman364
(29.11.2005 в 17:37)
| | Необходимо исправить выражение следующим образом
<?php
preg_match_all("/<[Aa][ \r\n\t]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\n\r\t]*([^ \"'>\r\n\t#]*dska[^>]*)>/",$buf,$url);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(29.11.2005 в 21:53)
| | мы близки к победе строки отбираются нужные , только вывод немного больше чем нужно
http://www.dska.ru/arm.htm" http://www.dska.ru/insh.htm" http://www.dska.ru/dok.htm" TARGET=" blank" http://www.dska.ru/dop.htm" TARGET=" blank" http://www.dska.ru/mos.htm" class="main-menu" http://www.dska.ru/rus.htm" class="main-menu" http://www.dska.ru/str.htm" class="main-menu" http://dska.ru/delit.php" class="main-menu" http://villa.dska.ru" target="W12" class="main-menu" http://dska.ru/rest" target="W17" class="main-menu" http://dska.ru/rest.htm" target="W11" class="main-menu" http://dska.ru/designer.htm" target="W6" class="main-menu" http://dska.ru/anscot.htm" target="W16" class="main-menu" http://dska.ru/germabutil.htm" target="W11" class="main-menu" http://dska.ru/as.htm" target="W5" class="main-menu" http://dska.ru/dom.htm" target="W9" class="main-menu" http://dska.ru/mag.htm" target="W14" class="main-menu" http://dska.ru/nov.htm" target="W15" class="main-menu" http://dska.ru/inv.htm" target="W16" class="main-menu" http://dska.ru/stroi.htm" target="W15" class="main-menu
НУ ДОВАЙ ДОЖМЕМ!!!!!!!!!
С уваженеим Сергей! | |
|
|
|
|
|
|
|
для: doberman364
(30.11.2005 в 17:31)
| | Можно усовершенствовать регулярное выражение следующим образом
<?php
preg_match_all("/<[Aa][ \r\n\t]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\n\r\t]*([^ \"'>\r\n\t#]*dska[^ \"'>]*)[\"']*>/",$buf,$url);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(01.12.2005 в 00:45)
| | Огромное спасибо но мое выражение работает лучше !
preg_match_all("/<[Aa][ \r\n\t]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\n\r\t]*([^ \"'>\r\n\t#]*dska[^\"]*)[$\"]/",$buf,$url);
С уважением Сергей!!! | |
|
|
|