Помогите вытащить числа из ссылки

Печать RSS
727


Чатланин
0

 <?
$url='http://visavi.net/index.php';
$content=file_get_contents($url);
$count=preg_match_all('~<a[^>]+href[\x20]?=[\x20\x22\x27]?([^\x20\x22\x27\x3E]+)[\x20\x22\x27]?[^>]*>~i', $content, $matches);
for($i=0; $i<$count; $i++)
{
if(stristr($matches[1][$i],"game")){
echo parse_url($matches[1][$i],PHP_URL_QUERY);
}
}
?>
 


Добавлено через 01:30 сек.
получишь это u=43&s=42944479&r=13754
С
Автор
Пришелец
0
Ооо)) выводиться вот такой результат) u=43&s=36491238&r=12320 , а как теперь эти цифры занести в переменные?
Что бы их в дальнейшем можно было использовать?
$a=43;
$b=3649912;
$c=123220;
С
Автор
Пришелец
0
т.е что бы на других файлах само подставляло часть ссылки после названия файла, на сайте много разных файлов например, game.php, chat.php, profile.php и т.д, выглядит это вот так.
http://сайт.ру/game.php?u=43&s=70939191&r=6784
http://сайт.ру/chat.php?u=43&s=45379194&r=9061
http://сайт.ру/profile.php?u=43&s=45379194&r=8922

как прошёл авторизация на сайте тебе присваиваеться ид, сессия, т.е u=ид, s=сессия и т.д. Нужно эти значения записать в переменную что бы уже дальше их использовать, например так

CURLOPT_URL, 'http://сайт.ру/chat.php?u='.$a.'&s='.$b.'&r='.$b.');
Изменил: Саня (09.03.2015 / 01:29)

Чатланин
0
<?
$url='u=43&s=36491238&r=12320&';
$x=explode("&",$url);
print $x[0];
print $x[1];
print $x[2];
$y=explode("=",$x[0]);
print $y[1];
$z=explode("=",$x[1]);
print $z[1];
$v=explode("=",$x[2]);
print $v[1]; 
?>

Добавлено через 02:30 сек.
когда получишь эту строку u=43&s=42944479&r=13754 в переменной , добавь ей в конце символ &
Изменил: Сергей (09.03.2015 / 01:51)
С
Автор
Пришелец
0
Сделал вот так

$out=curl_exec($ch);


$count=preg_match_all('~<a[^>]+href[\x20]?=[\x20\x22\x27]?([^\x20\x22\x27\x3E]+)[\x20\x22\x27]?[^>]*>~i', $out, $matches);
for($i=0; $i<$count; $i++)
{
if(stristr($matches[1][$i],"game"))
{
$s= parse_url($matches[1][$i],PHP_URL_QUERY);
$url=$s;

$x=explode("&",$url);

$y=explode("=",$x[0]);

$z=explode("=",$x[1]);

$v=explode("=",$x[2]);


$id=$y[1];
$session=$z[1];
$rand=$v[1];

echo 'ид='.$id.', сессия='.$session.', антикэш='.$rand.' '; 

}
}

выводиться вот такое сообщение ид=info, сессия=, антикэш= ид=, сессия=, антикэш= ид=43, сессия=46747890, антикэш=64627,

всё верно, только что не верно
Изменил: Саня (09.03.2015 / 02:29)
B

Пришелец
0
все верно, код рабочий, но только для game.php?u=43&s=70939191&r=6784, в остальных случаях возвращает пустой результат, а чтобы избегать этого echo надо вывести из цикла
$count=preg_match_all('~<a[^>]+href[\x20]?=[\x20\x22\x27]?([^\x20\x22\x27\x3E]+)[\x20\x22\x27]?[^>]*>~i', $out, $matches); 
for($i=0; $i<$count; $i++) 
{ 
	if(stristr($matches[1][$i],"game")) 
		{
			$s= parse_url($matches[1][$i],PHP_URL_QUERY); 
			$url=$s;
			$x=explode("&",$url);
			$y=explode("=",$x[0]);
			$id=$y[1];
			$z=explode("=",$x[1]);
			$sess=$z[1];
			$v=explode("=",$x[2]); 
			$rand=$v[1];
		} 
}
 
echo '<br/>ид='.$id.'<br/> сессия='.$sess.'<br/> антикэш='.$rand.'<br/>';
результат
ид=43
сессия=36491238
антикэш=12320
Однако, если нет необходимость в дальнейшем отдельно использовать значения id, sess, random, то можно сделать еще проще, использовать сам $url для рисования ссылок
 $url=mb_substr($url, 0, -1);//удаляем последний амперсанд
 echo 'chat.php?'.$url.'<br/>';
 echo 'profile.php?'.$url.'<br/>';
 echo 'setting.php?'.$url.'<br/>';
результат
chat.php?u=43&s=36491238&r=12320
profile.php?u=43&s=36491238&r=12320
setting.php?u=43&s=36491238&r=12320
З.Ы. с уважением СТО hello
Изменил: bab-nike (10.03.2015 / 01:20)
С
Автор
Пришелец
0
Боря спасибо большое))) то что нужно))) Выручилsmile
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск