function links(){
$html = new simple_html_dom();
$html->load_file($this->url);
$arr = array();
foreach ($html->find('td[width=100%]') as $e) {
$td = $e->innertext;
$arr[] = $td;
}
foreach ($html->find('a') as $e) {
$href = $e->href;
$page = stristr($href, "page");
$main = iconv('Windows-1251', 'UTF-8', $arr[2]);
$page1 = stristr($main, $page);
if ($page1 !== false) {
$query = $this->pdoselect("*", "compr_pages", "page like '$page'");
$pg = '';
while ($fetch = $query->fetch(PDO::FETCH_ASSOC)) {
if ($fetch['page'] == $page) {
$pg = $page;
}
}
if ($page == $pg) {
break;
}
else {
$pagearr = array($page);
$lastpage = array();
$lastpage = array_merge($pagearr);
print_r ($lastpage);
echo '<br/>';
}
}
}
}
`
Возвращает мне цикл строк такого вида:
Array ( [0] => page_36514.htm ) Array ( [0] => page_36511.htm ) Array ( [0] => page_36510.htm ) Array ( [0] => page_36512.htm ) Array ( [0] => page_36508.htm )
Но я всё не могу объединить результат выполнения этого кода в один массив, пробовал через foreach, но не выходит.
Использую библиотеку парсера SIMPLE_HTML_DOM
Воспользуйтесь методом array_push($arr, $link), а после этого возвращайте массив с значениями, которые Вам нужны.
function ($links) {
$arr = [];
foreach ($links as $link) {
array_push($arr, $link);
}
return $arr;
}
Ваш код ничего вам не возвращает, просто выводит массивы с одним значением которое вы же туда и засунули $pagearr = array($page);. Перед foreach ($html->find('a') as $e) { создайте массив $pages = []; И в него добавляйте данный, за приделами цикла выведите его:
$pages = [];
foreach ($html->find('a') as $e) {
...
$pages[] = $page;
...
}
print_r($pages);
Продвижение своими сайтами как стратегия роста и независимости