Всё
Вот и конец пришёл. Гугл побанил все мои блоги, которые наполнялись перемешиванием снипетов гугловского же поиска по блогам. Очень жаль.
P.S. Скрипты на заказ — обращайтесь. =)
Вот и конец пришёл. Гугл побанил все мои блоги, которые наполнялись перемешиванием снипетов гугловского же поиска по блогам. Очень жаль.
P.S. Скрипты на заказ — обращайтесь. =)
Разгребая винт, нашёл у себя базы русских имён и фамилий, когда-то спарсенных с контакта. Если интересно — забирайте.
Список спарсен так, что неуникальные имена не отфильтровывались. Ну то есть если уже есть имя “Александр” и пришло ещё одно такое же — он всё равно записывается в результирующий файл. Благодаря этому теперь при выборе рандомного имени чаще будут выбираться распространённые имена, а редкие — реже. Чуть не забыл — все файлы в юникоде.
Напоследок презентую функцию выбора из файла случайной строки. Так как файлы большие, то считывать их целиком чем-то типа file() совсем не комильфо. Поэтому открываем файл, ставим указатель на произвольное место и считываем кусок.
function getRandomLine($file) {
$max = filesize($file);
$fp = fopen($file, 'r');
fseek($fp, rand(0, $max-60));
$word = stream_get_line($fp, 60);
fclose($fp);
$word = explode("\n", $word);
return trim($word['1']);
}
Вот предположим вам зачем-то понадобился список чьих-то друзей вконтакте (скриптом, естесственно ;). Предположим, вы нашли человека, список которого открыт для всех. Но вот незадача. Там нет голого хтмл – в странице отдаётся json строка, которая яваскриптом разворачивается в нечто полноценное. Ну, значит будем работать с json строкой. В php есть функция json_decode.
Но тут нас подстерегает вторая засада. Дело в том, что яваскрипт гораздо более лоялен к синтаксису json строки, чем php. В частности, первый допускает
{ foo: "bar" } а второй требует только так
{ "foo": "bar" }
С проблемой определились, будем решать.
$res = file_get_contents('http://vkontakte.ru/friend.php?id=8094439');
$friends = explode("friendsInfo = ", $res, 2);
$friends = explode('</script>', $friends['1'], 2);
$friends = $friends['0'];
//заменяем одинарные кавычки на двойные - тоже требование синтаксиса php
$friends = str_replace("'", '"', $friends);
//регэксп, который оборачивает все ключи в кавычки
$friends = preg_replace('#({|,)\s*([a-z0-9]+):#uis', '$1"$2":', $friends);
//декодируем json, возвращаем массив
$friends = json_decode($friends, true);
debug($friends);
Собственно вот. Только смотрите пишите аккуратные скрипты, чтоб за откровенный спам вам ноги не переломали =).
Ну и вот ещё вдогонку информация, которую можно взять уже отсюда:
array(
'p' => 'http://cs1431.vkontakte.ru/u84677/b_977e6e9f.jpg', //аватар
'uy' => '10', //год выпуска
'uf' => '966', //идентификатор факультета
'h' => 'f854834e', //фиг знает
'to' => 'Дмитрия', //имя в родительном падеже, нужно для фразы "друзья Дмитрия"
'r' => '66', //процент заполненности профиля
'f' => '0',
'u' => '240', //идентификатор университета
'ds' => '0',
'pr' => '1' //флаг скрытого профиля
);