Сюда
curl_setopt($ch, CURLOPT_POSTFIELDS, $array);
нужно отправлять строку, а не массив.
$ch = curl_init('https://www.immowelt.de/liste/getlistitems');curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, 'query=geoid%3D10814285250%26etype%3D2%26esr%3D1%26sort%3Drelevanz&offset=4&pageSize=4');curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_HEADER, false);$html = curl_exec($ch);curl_close($ch);echo $html;
Не помогло... и туда можно отправлять массив https://www.php.net/manual/ru/function.curl-setopt.php
Этот параметр может быть передан как в качестве url-закодированной строки, наподобие 'para1=val1¶2=val2&...', так и в виде массива, ключами которого будут имена полей, а значениями - их содержимое.
ТС по ходу в вложенном цикле определял данные, но не обнулял буфер(переменную которую я обычно называю автобус), поэтому у него эти данные суммировались. Инкапсуляция тут никаким боком 🤔
Так и есть - переменные определялись внутри цикла и на каждой итерации писались в базу.
Странность для мня по сути вот в чем - если на данной итерации в переменную не приходило данных (парсер не находил инфы на странице), то я ожидал что переменная станет пустой, а она оставалось со значением из прошлой итерации.
придумал, отвечаю по традиции сам себе
$re = '~^(.*)((([А-ЯA-Z]|[А-ЯA-Z][\x27а-яa-z]{1,}|[А-ЯA-Z][\x27а-яa-z]{1,}\-([А-ЯA-Z][\x27а-яa-z]{1,}|(оглы)|(кызы)))\040[А-ЯA-Z][\x27а-яa-z]{1,}(\040[А-ЯA-Z][\x27а-яa-z]{1,})?))$~muU';$str = 'Усов Василий НиколаевичСмелянский Александр ЮрьевичОоо "МираторгБелгород" Прохоров Владимир ИвановичЯкушев Михаил ВячеславовичШильников Александр СергеевичСкляренко Виктор ВладимировичПопов Александр ИвановичКОЛХОЗА Товстяк Владимир ВасильевичБигас Анатолий СтепановичВысоцкий Николай СеменовичЧефранов Михаил ЭдуардовичЛИКВИДАТОР Помельников Юрий МихайловичОоо "Ук ПродимексСахар" Данькевич Григорий НиколаевичИСПОЛНЯЮЩИЙ ОБЯЗАННОСТИ ГЕНЕРАЛЬНОГО А Астахов Анатолий НиколаевичУправляющий Фоминов Василий ИвановичУправляющий Ретунский Алексей ИвановичБыковец Людмила СергеевнаЖабин Сергей ВикторовичКамолин Александр ВалерьевичШколлер Роман АлександровичГоловин Максим Валентинович';$subst = '$2';$result = preg_replace($re, $subst, $str);echo "The result of the substitution is ".$result;
Смотреть вариант 1.
Прописал перед определением каждой переменной в цикле присвоение ей пустоты (очищаю каждую переменную при итерации) и все глюки пропали.
Было так
$full_name = addslashes(trim($pq->find('.c2m')->find('p')->find('a:eq(0)')->text()));
стало так
$full_name = '';$full_name = addslashes(trim($pq->find('.c2m')->find('p')->find('a:eq(0)')->text()));
Тут два варианта:
Скрипт написал я. Значит описанное мной предположение невозможно? Переменные затираются при каждой итерации даже пустотой?
Прошу оценить мое собственное решение, мне кажется оно в разы лаконичнее и понятнее
$tmp = 0;$newArr = [];for($i=0;$i<317;$i++){ if(!in_array(1, $tempArr[$i])) { //добавляем первый подмассив, или если после цепочки единиц начались нули $tmp еще не перезатерлась и скажет нам об этом if(count($newArr)==0 || $tmp == 1){ array_push($newArr, $tempArr[$i]); }else{ foreach ($tempArr[$i] as $item) { array_push($newArr[count($newArr)-1], $item); } } $tmp = 0; } else { //пушим новый подмассив с единицами, если он пошел после цепочки нулей $tmp еще не перезатерлась и скажет нам об этом if($tmp == 0){ array_push($newArr, $tempArr[$i]); } if($tmp == 1){ foreach ($tempArr[$i] as $item) { array_push($newArr[count($newArr)-1], $item); } } $tmp = 1; }}