Подскажите как вырвать кусок URL'a

12
CyberX
На сайте с 08.03.2008
Offline
51
1005

http://yandex.ru/yandsearch?text=bmw+7+12

нужно средствами PHP выбрать и получить текст "bmw 7 12"

Если будет готовый пример - прекрасно.

Если нет хоть ссылочку где почитать можно.

Шустрый хостинг (http://www.colocat.ru) за нормальные деньги (Москва). 30 дней тестовый период. Рекомендую копирайтера aronskaya (/ru/users/73753). Отличные авторские тексты.
B
На сайте с 03.07.2008
Offline
48
#1

Если именно такой вид везде будет, то проще всего substr использовать

$text = "http://yandex.ru/yandsearch?text=bmw+7+12";

$st = substr($text,33,strlen($text));
$st = str_replace('+',' ', $st);
echo $st; //результат: "bmw 7 12"
Я не создаю сайты - я делаю их лучше (QA)
CyberX
На сайте с 08.03.2008
Offline
51
#2

Прошу прощения не правильно вопрос задал.

Нужно из Яши выдергивать ключевые слова из URL с которых ссылаются на сайт.

B
На сайте с 03.07.2008
Offline
48
#4

Если все ссылки на одной странице, то тяни ее любым удобным способом, затем:

preg_match_all("/<a +href=\"([^>]+)\"/", $cod_stranici ,$match);

foreach ($match[1] as $link)

{

$st = substr($text,33,strlen($link));

$st = str_replace('+',' ', $st);

echo $st;

}

[Удален]
#5

BFox, я вот смторю на ваши куски говнокода и понимаю "либо где то своровал их - пофиг тогда", "или пишет заведомо код, который порождает/породит ошибки" в любом случае УГ

bearman добавил 16.07.2009 в 12:59

parse_args

parse_str

и вам хватит этих двух функций чтобы работать с url в приятном виде

CyberX
На сайте с 08.03.2008
Offline
51
#6

В общих чертах сделал то что мне было нужно.

получилось следующее:


$url=($HTTP_REFERER);
$remoteip=($REMOTE_ADDR);
$time=date("H:i:s d M Y");
$parts = parse_url($url);
parse_str($parts['query'], $fields);
if ($parts['host'] == "nova.rambler.ru") { $req=iconv('UTF-8','windows-1251',$fields['words']); }
if ($parts['host'] == "yandex.ru") { $req=iconv('UTF-8','windows-1251',$fields['text']); }
if ($parts['host'] == "www.google.ru") { $req=iconv('UTF-8','windows-1251',$fields['q']); }
if ($parts['host'] == "sm.aport.ru") { $req=$fields['r']; }
if ($parts['host'] == "www.мойсайт.ru") { $req="переход внутри сайта"; }
if ($parts['host'] == "мойсайт.ru") { $req="переход внутри сайта"; }
if ($parts['host'] == "") { $req="вход с закладки"; }
$f=fopen("visits.log",'a');
flock ($f,2);
fwrite($f,"$remoteip; $time; $req; $url\n");
fclose($f);

Прошу любить и жаловать, если есть мысли как сделать лучше, всегда скажу спасибо.

[Удален]
#7

ну разве что


<?
$url=($HTTP_REFERER);
$remoteip=($REMOTE_ADDR);
$time=date("H:i:s d M Y");
$parts = parse_url($url);
parse_str($parts['query'], $fields);
switch($parts['host'])
{
case "nova.rambler.ru":
$req=iconv('UTF-8','windows-1251',$fields['words']);
break;
case "yandex.ru":
$req=iconv('UTF-8','windows-1251',$fields['text']);
break;
case "www.google.ru":
$req=iconv('UTF-8','windows-1251',$fields['q']);
break;
case "sm.aport.ru":
$req=$fields['r'];
break;
case "www.мойсайт.ru":
case "мойсайт.ru":
$req="переход внутри сайта";
break;
default:
$req="вход с закладки";
}

$f=fopen("visits.log",'a');
flock ($f,2);
fwrite($f,"$remoteip; $time; $req; $url\n");
fclose($f);

если бы сайтов было побольше, то я бы сделал правила разбора, а не считч))

B
На сайте с 03.07.2008
Offline
48
#8

bearman, что вам именно не нравится? ну с substr загнул конечно, но я и написал, что если все ссылки такого вида на той странице откуда их берем/

Про parse_args, parse_str незнал, спасибо.

А про пораждение ошибок объяните, не обаснованный факт, при тех условиях что описанный выше(т.е. все ссылки имеют такой вид)

T
На сайте с 13.01.2009
Offline
50
#9

дуд , поправь , break; пропустил

[Удален]
#10

Troytft, в принципе в последнем свиче похрен :) они сверху вниз выполняются.

bearman добавил 16.07.2009 в 14:32

http://yandex.ru/yandsearch?text=bmw+7+12

тут - если будет запрос с русским языком, то вы получите %xx на выходе, а я думаю тс хотел видеть буквы. учите матчасть надо не str_replace("+"," ", а urldecode.

Если все ссылки на одной странице, то тяни ее любым удобным способом, затем:
preg_match_all("/<a +href=\"([^>]+)\"/", $cod_stranici ,$match);
foreach ($match[1] as $link)
{
$st = substr($text,33,strlen($link));
$st = str_replace('+',' ', $st);
echo $st;
}

тут. не все вебмастера ставят href в "кавычки", часто ставят в 'одинарные кавычки'. и еще чаще href - не первый атрибут, отделенный несколькими пробелами от <a

такое обоснование вашего говнокода вам нравится? :)

12

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