Скрипт парсинга

12
[Удален]
894

Всем добрый день!

Подскажите, пожалуйста, по скриптику.

Имеется страницу с урлами, нужно выдрать домены (site.ru) записать в таблицу, но почему-то в итоге только один урл записывается и все. В php нуль, пытаюсь разбираться.


$html=file_get_contents("http://test7.ru/site.htm");
preg_match_all("/http:\/\/(.*)\//Uis",$html,$links);//парс урла
$links=$links[1];
$sql="INSERT INTO `$table` SET
site='".mysql_escape_string($links[1])."';
mysql_query($sql);//SQL запрос для добавление в бд статьи
echo mysql_error();

Да всех, с наступающим НГ!

alexspb
На сайте с 14.11.2005
Offline
187
#1

vizza, так вам надо массив в цикле пройти и закинуть в базу. а вы только первый элемент массива пытаетесь

З
На сайте с 24.04.2008
Offline
54
#2

preg_match_all() вернет Вам (по умолчанию) массив, в котором под индексом 1 будут как раз совпадения с первой подмаской. Однако т.к. это массив, то надо пройтись по нему (например, foreach). А вообще, проверьте сперва, что в массиве лежит, например через print_r($links)

[Удален]
#3

да я так впринципе и по логике понимал что нужен масив, а что конкретно написать не разобрался.

Напишите пожалуйста необходимые строчки

alexspb
На сайте с 14.11.2005
Offline
187
#4

Вот так по массиву можно пройтись


foreach ($array as $value) {
$sql="INSERT INTO `$table` (`site`) VALUES ( '$value')";//SQL запрос
mysql_query($sql);
}
З
На сайте с 24.04.2008
Offline
54
#5

Эээх... А уж с массивами-то надо разобраться, если хотите php изучать. Это практически краеугольный камень, уж в парсинге-то 100% :)

ЗЫ. В качестве самостоятельной работы - предотвратите возможные SQL-инъекции и вообще оптимизируйте приведенный выше код. Очень пригодится в дальнейшем ;)

[Удален]
#6

Что не получается подправил так


$html=file_get_contents("http://test7.ru/site.htm");
preg_match_all("/http:\/\/(.*)\//Uis",$html,$links);//парс урла
$links=$links[1];
foreach ($array as $value) {
$sql="INSERT INTO `$table` (`site`) VALUES ( '$value')//SQL запрос
site='".mysql_escape_string($links)."'";
mysql_query($sql);//SQL запрос для добавление в бд
}

alexspb
На сайте с 14.11.2005
Offline
187
#7

vizza, $array as $value - это пример - вы же можете свой массив вставить вместо $array?

и вам еще с запросами надо разбираться

[Удален]
#8

если я правильно понимаю, то нужно сначала создать этот массив!

З
На сайте с 24.04.2008
Offline
54
#9

vizza,

А надо ли? Вдруг он уже есть, просто назван по-другому? ;)

Почитайте хоть мануал по основным используемым Вами функциями. Ладно бы что-то сверхсложное использовали :) Все же просто: прогнали строку через регулярное выражение -> в цикле по массиву схождений формируем SQL-запрос -> выполняем запрос.

Чуть-чуть почитать про preg_match_all(), чуть-чуть про foreach() и немного про mysql_query() и семейство mysql_ в целом.

alexspb
На сайте с 14.11.2005
Offline
187
#10
vizza:
если я правильно понимаю, то нужно сначала создать этот массив!

он у вас уже есть - $links[1]

просто надо было подставить свой массив вместо того, что в примере (а вы уже и пример покромсали)

12

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