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

Форум PHP

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

 

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

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

тема: Как вырезать полный url со страницы !
 
 автор: trix   (02.02.2007 в 16:52)   письмо автору
 
 

Народ подскажите способ как попроще вырезать урлы со страницы.

Есть строка типа:
"Блалалалалала <a href="http://www.lalalalala.ru/idex.php?lala=lala" title="lala"> блалбалалала"
мне нужно вырезать весь урл http://www.lalalalala.ru/idex.php?lala=lala

Я написал код, но он весьма громоздкий, может можно как-то по проще сделать ?

Вот код:


function prov($cod)
{
$href = @strpos($cod,"href",0)+5;
if ($href == "5")
{ $href = @strpos($cod,"SRC",0)+4;
    if ($href == "4")
    { $href = @strpos($cod,"src",0)+4; }
}



$ugl = strpos($cod, ">",$href);
$dlina = $ugl - $href;
$text = substr($cod,$href,$dlina);


ereg("['\"]",$text,$regs);


if ($regs[0] != "")
{
$sim = strpos($text, $regs[0],0);
$sim2 = strpos($text, $regs[0],4)-1;
$http = strpos($text, "http:",0);
    if ($http != "")
    {
    $sim = $http+6;
    }
    
$dlina = $sim2 - $sim;
$text2 = substr($text, $sim+1,$dlina);

    
ereg("[/\\]",$text2,$regs2);
    if ($regs2[0] != "")
    {

    $sim3 = strpos($text2, $regs2[0],3);

    $url = substr($text2,0,$sim3);

    }
    else { $url = $text2; }
}
else 

$http = strpos($text, "ttp:",0);
    if ($http != "")
    {
    $text = substr($text,7);

    }

ereg("[/\\ ]",$text,$regs);
    
    if ($regs[0] != "")
    {
    $sim = strpos($text, $regs[0],8);
    $url = substr($text,0,$sim);

    }
    else { $url = $text; }

}


 return($url); 

}



Весьма громоздко с кучей проверок =( Может есть какие-то функции с помощью которых это можно упростить ?

   
 
 автор: kasmanaft   (02.02.2007 в 16:58)   письмо автору
 
   для: trix   (02.02.2007 в 16:52)
 

Можно использовать регулярные выражения.

<?php
$text 
'Есть строка типа:
"Блалалалалала <a href="http://www.lalalalala.ru/idex.php?lala=lala" title="lala"> блалбалалала"
мне нужно вырезать весь урл http://www.lalalalala.ru/idex.php?lala=lala
Я написал код, но он весьма громоздкий, может можно как-то по проще сделать ?'
;
if (
preg_match_all("#<a\s+[^>]*href=['\"]?([^'\"\s>]+)['\"]?[^>]*>#is"$text$regs))
{
    echo 
"<pre>";
    
print_r ($regs[1]);
}
?>

Вырезать нужно ссылки из тегов, после "href=" ?

   
 
 автор: trix   (02.02.2007 в 17:12)   письмо автору
 
   для: kasmanaft   (02.02.2007 в 16:58)
 

Класс =)
Спасибо за помощь, я так и думал что нужно регулярные выражения использовать, но все не могу с ними разобраться толком, если не трудно может мануальчик на синтаксис посоветуете ?

   
 
 автор: kasmanaft   (02.02.2007 в 17:26)   письмо автору
 
   для: trix   (02.02.2007 в 17:12)
 

Не, не посоветую :)
Лежит на php.net, но я его не читал ... вроде понятно.
http://www.php.net/manual/ru/reference.pcre.pattern.syntax.php
Тут на сайте можно скачать книгу Фридла по рег. выражениям, вот ее я бы посоветовал почитать ... хотя бы пару глав.

   
 
 автор: cheops   (03.02.2007 в 03:39)   письмо автору
 
   для: trix   (02.02.2007 в 17:12)
 

Возможно вам будет интересна ссылка http://www.softtime.ru/info/fridl.php.

   
Rambler's Top100
вверх

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