Теперь нам нужно усовершенствовать наш код, что бы он парсил все записи а не только одну. Значит нам нужно сделать так, что бы скрипт пробежался по всем страничкам с записями и занёс их нам в БД.
Приведу сразу код, потом объясню:
function title($var) {
preg_match('/<title>(.*?)<\/title>/is', $var, $title);
$titles = str_replace('"', '"', $title['1']);
return $titles;
}
function text($var) {
preg_match('/<div class=\"post\">(.*?)<div style=\"float:left\">/is', $var, $text);
$texts = preg_replace('/<img(.*?)\/>/si','',$text['1']);
$texts = preg_replace('/<a(.*?)<\/a>/si','',$texts);
$texts = str_replace('"', '"', $texts);
$texts = strip_tags($texts);
return $texts;
}
for ($i = 1; $i < 177; $i++) {
$file = file_get_contents('http://helltar.ru/post-'.$i.'.html');
$title = title($file);
$text = text($file);
if ($title && $text) {
mysql_query("INSERT INTO `lib` SET
`refid` = '450',
`time` = '" . time() . "',
`type` = 'bk',
`name` = '" . mysql_real_escape_string(mb_substr(trim($title), 0, 100)) . "',
`announce` = '" . mysql_real_escape_string(mb_substr(trim($text), 0, 100)) . "',
`text` = '" . mysql_real_escape_string($text) . "',
`avtor` = 'ValekS',
`ip` = '0',
`soft` = '1',
`moder` = '1'
");
echo 'Пост '.$i.' - Готово!<br/>';
} else {
echo 'Пост '.$i.' -Ошибка!<br/>';
}
}Это кстати весь код файла. Как видим функции я переместил в самый верх. Что бы они не путались с остальным кодом и не мешали нам. Затем добавил Цикл for(). Он нужен для того что бы скрипт выполнился заданное кол-во раз. Без цикла наш скрипт не сможет пробежаться по всем записям. Цикл прост: for ($i = 1; $i < 177; $i++) { } - сначала мы создаём цикл, затем присваиваем переменной $i значение 1, потмо ставим условие повторения цикла - если $1 меньше 177 то повторяем цикл, ну и увеличиваем $1 на единицу каждый раз при повторении цикла. Цифра 1 это ай-ди первой записи, хоть её и нет, а 177 это ай-ди последней записи увеличенное на единицу, можно было и не увеличивать - $i >= 176.
Тут ещё есть одно важное дополнение нашего начального кода - условие IF. Условие if ($title && $text) проверяет установлены ли переменные Титл и Текст, и есть они есть то только тогда выполняется запись в Базу Данных и вывод текста “Готово”. Если переменных нет выводим ошибку. Таким способом мы откинем все несуществующие(удалённые) записи, ведь если записи нет то где переменные возьмут Название записи и Текст?
Ну и стоит ещё заметить что для получения данных странички с записью мы подставляем в ссылку переменную $1 вместо ай-ди:
было - $file = file_get_contents('http://helltar.ru/post-176.html');
стало - $file = file_get_contents('http://helltar.ru/post-'.$i.'.html');