curl - вземане на мулти инфо

CaTaHuK

Registered
Как мога да взема всички елементи ако са изброени. Примерно от тук да изведа всички потребителски имена.

Благодаря предварително (+1) :?:
 
Това няма много общо с curl, а по-скоро с работа със низове. И трика в общи линии е да си намериш нещо уникално за всеки елемент, който ти трябва и спрямо него да си вземеш каквото ти трябва :)
В случая е лесно - всеки username го има в href, във формат href="/user:{username}". С един preg_match() можеш да се извадиш само тези редове.
Това е един код, който го прави:

Код:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://vbox7.com/show:whoisonline');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
curl_close($ch);
preg_match_all('/a href="\/user\:[^"?]*"/', $html, $users);
for($i=0, $a=count($users); $i<$a; $i++)
	$users[$i]=str_replace('"','', str_replace('a href="/user:', '', $users[$i]));
print_r($users);
?>

С това взимам целия html на сайта:
Код:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://vbox7.com/show:whoisonline');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
curl_close($ch);

С това взимам всички стрингове, които отговарят на /a href="\/user\:[^"?]*"/
Код:
preg_match_all('/a href="\/user\:[^"?]*"/', $html, $users);

След това просто изчиствам ненужното за всеки от намерените елементи:
Код:
$users[$i]=str_replace('"','', str_replace('a href="/user:', '', $users[$i]));

Надявам се, че това помага на някого :) В общи линии няма еднозначно решение - трябва да се измисли нещо в зависимост от конкретните данни.

Ако мога да помогна с нещо по-нататък - питайте...
 
Можеш ли да направиш така, че да ми ги изкарва всички отеделени със запетая (angel)
 
Всички от първа страница :)

Код:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://vbox7.com/show:whoisonline');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
curl_close($ch);
preg_match_all('/a href="\/user\:[^"?]*"/', $html, $users);
for($i=0, $a=count($users); $i<$a; $i++)
	$users[$i]=str_replace('"','', str_replace('a href="/user:', '', $users[$i]));
echo(implode(', ',$users[0]));
// print_r($users);
?>
 

Back
Горе