[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: А сейчас что за беда с циклом ?
Frost-56
$url = 'http://blogstyle.ru/category/all/premium/page/';
$i = '0';

while($i <= 2){
$content = file_get_contents($url.$i);
if(preg_match_all('~<a class="thickbox" href="(.*?)"><img class="th" src="(.*?)"~', $content, $match)){

$i++;

}

else
{
break;
}
}


echo "<pre>";
print_r($match[1]);
print_r($match[2]);
echo "</pre>";



Регулярка нормально собирает всё, а вот цикл не работает очень странно.

если while($i <= 2) то он соберет только со второй страницы данные.
while($i <= 13) то только с 13 страницы.


Вроде правильно сделал всё, а че ему надо тогда?
Placido
print_r($match) должен быть внутри while, так как с каждым проходом $match перезаписывается:
while($i <= 2){
$content = file_get_contents($url.$i);
if(preg_match_all('~<a class="thickbox" href="(.*?)"><img class="th" src="(.*?)"~', $content, $match)){

echo "<pre>";
print_r($match[1]);
print_r($match[2]);
echo "</pre>";

$i++;
}
Frost-56
Не помогает, там в цикле беда.
Но меня сейчас это не сильно волнует, мне интересно как сделать такое:


foreach ($match[1] as $image){
foreach ($match[2] as $imaged){

$sql = 'INSERT INTO shablon_biznes (foto, demo) VALUES ("'.$image.'", "'.$imaged'")';

if(!mysql_query($sql))
{echo '<center><p><b>Ошибка при добавлении данных!</b></p></center>';}
else
{echo '<center><p><b>Данные успешно добавлены!</b></p></center>';}

}
}



match[1] и матч[2] надо записать в 1 таблицу по разным столбцам из цикла foreach.

Скрипт повторяет 1 и тоже раз 10.
inpost
Вот ты в цикле запускаешь preg_match, первый заход в $matches записал результат. Вторая итерация цикла уже перезаписала массив matches, и так далее.
Чтобы не было перезаписи, лучше всего:
$match[$i];
То есть каждая новая запись в отдельный индекс попадёт.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Frost-56
Что то не совсем Вас понял.

<?PHP
include 'cfg.php';
ini_set('display_errors',1);
error_reporting(E_ALL);
set_time_limit(0);

$url = 'http://blogstyle.ru/category/all/premium/page/';
$i = '1';

//while($i <= 1){

$content = file_get_contents($url.$i);
if(preg_match_all('~<a class="thickbox" href="(.*?)"><img class="th" src="(.*?)"~', $content, $match)){

//$i=$i+1;


echo "<pre>";
print_r($match[$i]);
print_r($match[2]);
echo "</pre>";

}
/*
else
{
break;
}
}
*/


/*
foreach ($match[1] as $image){
foreach ($match[2] as $imaged){



mysql_query("INSERT INTO shablon_biznes (foto, demo) VALUES ('.$image.', '.$imaged.')",$db);

}
}
*/

?>


В print_r($match[1]); заменил на print_r($match[$i]); а что делальть с match[2] ?


А если Вы говорите про этот кусок

', $content, $match)){


заменить на

', $content, $match[$i])){



То получается не массив, а полный бред.



Я всю ночь не сплю, мучаюсь с этими циклами ((
inpost
"То получается не массив, а полный бред."
Это называется многомерный массив, именно то, что тебе надо.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Frost-56
Цитата (inpost @ 15.09.2013 - 05:28)
"То получается не массив, а полный бред."
Это называется многомерный массив, именно то, что тебе надо.

Так он тогда не работает как массив, он мне кусок кода с картинками выкидывает в array
inpost
Frost-56
А ты не знаешь, что надо писать так:
echo '<pre>'.htmlspecialchars(print_r($array,1)).'</pre>';


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
OleKh
Может так можно реализовать.

$url = 'http://blogstyle.ru/category/all/premium/page/';
$i = 1;
$test_array = array();//test

while ($i <= 2) {
$content = file_get_contents($url . $i);
if (preg_match_all('~<a class="thickbox" href="(.*?)"><img class="th" src="(.*?)"~',
$content, $match)) {

for($j=0; $j<sizeof($match[1]); $j++){
if (!empty($match[1][$j]) && !empty($match[2][$j] )){
$test_array [$match[1][$j]] = $match[2][$j]; //test
mysql_query("INSERT INTO shablon_biznes (foto, demo)
VALUES ('
$match[1][$j]', '$match[2][$j]')",$db);
}
}

$i++;

} else {
break;
}
}


echo '<pre>'.htmlspecialchars(print_r($test_array,1)).'</pre>'; //test

/*Array
(
[
http://blogstyle.ru/sky/?wptheme=Architekt+Theme&TB_iframe=true&width=1020&height=480]
=> http://blogstyle.ru/wp-content/gallery/architekt.jpg

...
)

*/
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.