Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите составить рег выражение для нахождения доменного имени ссылок
 
 автор: ~LINA~   (24.12.2008 в 18:50)   письмо автору
 
 

Подскажите пожалуйста регулярное выражения для нахождения доменного имени первого и второго уровня(blabla.ru) из всех ссылок любого вида(http:blabla.ru/xfgbf/xgfbxfgb/xfgbgfb, либо http:www.blabla.ru/xfgbf/xgfbxfgb, либо www.blabla.ru/xfgbf/xgfbxfgb либо blabla.ru/xfgbf/xgfbxfgb или blabla.ru ) содержащихся в строке.

  Ответить  
 
 автор: xx77   (24.12.2008 в 20:11)   письмо автору
 
   для: ~LINA~   (24.12.2008 в 18:50)
 

тут безошибочно можно найти все адреса , если знать что в строке одни только адреса и ничего больше

вот здесь была похожая тема
http://softtime.ru/forum/read.php?id_forum=6&id_theme=46057

// кстати и правда есть такой адрес index.pl , можно зайти посмотреть , килобайт мало ;)

  Ответить  
 
 автор: AcidTrash   (24.12.2008 в 21:24)   письмо автору
 
   для: ~LINA~   (24.12.2008 в 18:50)
 

Хм, вы уж приведите кусок откуда надо найти. Просто не понятно, что в тексте может быть, просто domen.ru/bla или < a href=domen.ru/bla >text</a>. И кстати что хотите с ними сделать?
Короче опять шаманство.

  Ответить  
 
 автор: ~LINA~   (25.12.2008 в 10:21)   письмо автору
 
   для: AcidTrash   (24.12.2008 в 21:24)
 

Вобще у меня есть одна корявая регулярка, которая находит кусок строки с ссылкой и потом вручную для нахождения доменных имен всё лишнее вырезается, но мне нужно это как-то исправить чтоб сразу получать доменные имена из регулярки
Вот кусок кода

$url_patterns[1] = '~((\>|&gt;)?(href=\')?(href=\")?(www\.)?[A-Za-z0-9$_.+!*(),;/?:@&\~=-]{2,}\.(?:(?:com)|(?:co)|(?:uk)|(?:org)|(?:ru))(?:(?:[a-zA-Z0-9#$_.+!*(),;/?:@&\~=%-]&&[^\<]*))?)~';

if(preg_match_all($url_patterns[1],$checktext,$regs))
{
foreach($regs[1] as $num => $value)
{

$nwww=0;
$nhttp=0;

if (substr($value,0,4)=='&gt;') {
$value = substr($value,4);
}
else if (substr($value,0,1)=='>') $value = substr($value,1);

$nhref = substr_count(substr($value,0,4), "href");


if ($nhref>0){
$value = substr($value,5);
$firstsymb = substr($value,0,1);
if ($firstsymb = '"' || $firstsymb = '\'') $value = substr($value,1);
}

$nhttp = substr_count(substr($value,0,4), "http");
$nwww = substr_count(substr($value,0,3), "www");

if ($nhttp>0){
$nwww = substr_count(substr($value,7,3), "www");
if ($nwww>0) {
$value = strstr($value,".");
$value = substr($value,1);
}
else {
$value = strstr($value,"//");
$value = substr($value,2);
}
}
else if ($nwww>0) {
$value = strstr($value,".");
$value = substr($value,1);
}

$slash = strpos($value,"/");

if ($slash)
{
$value = substr($value,0,$slash);
}

foreach($bad_urls as $bad_url)
{
if ($value==$bad_url){
input_badurls_indb($checktext,$bad_url);
$spam = true;
}
}

}
}

  Ответить  
 
 автор: ~LINA~   (25.12.2008 в 10:28)   письмо автору
 
   для: AcidTrash   (24.12.2008 в 21:24)
 

найденные ссылки сравниваются с массивом $bad_url который содержит как-раз ссылки вида blabla.ru , pamparam.com и тд

  Ответить  
 
 автор: xx77   (25.12.2008 в 20:34)   письмо автору
 
   для: ~LINA~   (25.12.2008 в 10:28)
 

это практически не отличается от
<?
$checktext 
'
<a href="http://test.org/shodka">www.test.org/shodka</a>
www.cats.test.org/miu?pigs=http://dogs.test.org/
 https://crocodile-admin.test.org (https://255.255.255.255:3333/hello) 
'
;

$url_patterns '~\b(?:[-0-9A-Za-z]+(?:\.|://))*([-0-9A-Za-z]{2,}\.(?:com?|uk|org|ru))\b~';

if(
preg_match_all($url_patterns$checktext$regs))
{
print 
'<pre>';
print_r($regs);
} else print 
"ничего\n";
?>

чтото всёчто угодно слегка похожее на адрес но заканчивающееся на .com .co .uk ...

// или
 '~[-0-9A-Za-z]+\.(?:com?|uk|org|ru)(?=[\s"\'/]|$)~'

  Ответить  
 
 автор: Trianon   (25.12.2008 в 11:07)   письмо автору
 
   для: AcidTrash   (24.12.2008 в 21:24)
 

в тексте может быть, просто domen.ru/bla или < a href=domen.ru/bla >text</a>.

Последняя ссылка - это обращение к файлу bla в каталоге domen с расширением .ru , находящемуся в том же каталоге, что и документ с такой ссылкой (в простейшем случае).

  Ответить  
 
 автор: AcidTrash   (25.12.2008 в 17:25)   письмо автору
 
   для: Trianon   (25.12.2008 в 11:07)
 

Trianon, не цепляйтесь к примеру, смысл моего вопроса был таков, вытащить доменные имена из текста и/или из ссылок.

  Ответить  
 
 автор: Trianon   (25.12.2008 в 17:46)   письмо автору
 
   для: AcidTrash   (25.12.2008 в 17:25)
 

нет в той ссылке доменного имени.
или это специально было написано?

  Ответить  
 
 автор: AcidTrash   (25.12.2008 в 20:42)   письмо автору
 
   для: Trianon   (25.12.2008 в 17:46)
 

Да нет, не специально, просто тупо copy/past, ну уж не думал, что к этому будут притензии.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования