【发布时间】:2020-05-17 22:17:11
【问题描述】:
大家好,这是我的情况:
我正在浏览包含 10 000 多个 cmets 的旧页面,我正在尝试将其导入 WordPress。
我正在使用 simple_html_dom.php 库,在这种情况下它并不重要。
我正在做的是获取一个包含 24 个第一个帖子的 URL,并通过它们获取一个带有 cmets 的元素。
$url = 'http://xx/aktualnosci,wszystkie,0,'.$x.'.html'; //some URL with first 24 posts
$html = file_get_html($url);
$articlesCount = 0;
$commentsCount = 0;
foreach ($html->find('ul.news_codrugi li') as $article) { //get all 24 posts urls
$rawLink = $article->find('a');
foreach ($rawLink as $testLink) {
$link = 'http://xx/'.$testLink->href;
$rawTitle = $testLink->href;
$rawTitle = explode(",", $rawTitle);
$ggTitle = $rawTitle[1];
$htmlNew = file_get_html($link);
foreach ($htmlNew->find('div.komentarz_lista') as $comment) { //comment element
$comm = $comment->find('p');
foreach ($comm as $commText) {
$cleanerCommText = trim(strip_tags($commText));
$item['commRaw'] = $cleanerCommText;
$comments[] = $item;
}
$commentsCount++;
}
$articlesCount++;
}
//unset($articles);
}
目前一切都很好,我已经在 Array 中获得了所有 cmets。 问题是cmets文本、日期和作者在
没有任何类或 ID 的项目,所以我没有单独获取它们的触发器,所以我的数组是
[0] => 文本,[1] => 日期和作者,[3] => 文本,[4] => 日期和作者等
我正在尝试将其放入一个新数组中,例如 [text] => text, [sign] => date and author :
$x = $commentsCount;
echo $x.'<br />';
$rawComm = array_column($comments, 'commRaw');
$rawCommCount = count($rawComm);
echo 'Pobrane wpisy: '.$rawCommCount.'<br />';
$z = 0;
foreach($rawComm as $commItem) {
if($z % 2 == 0) {
$commArr['text'] = $commItem;
}else{
$commArr['sign'] = $commItem;
//echo $commItem;
}
echo 'Numer wpisu: '.$z.'<br />';
$z++;
}
在最后一个循环foreach($rawComm as $commItem) 中,当我回显这些值时,一切都很好,我已经正确打印了评论文本和评论日期和作者。但是当我试图将它放入一个新数组 $commArr 时,我得到了双倍的项目,所以我的数组是两倍大,所有的东西都翻了一番。
为什么我需要在新数组中使用它?因为我想把它放到数据库中。
所以在这一点上,我不知道是什么导致了这个问题。有什么帮助吗? :)
谢谢
【问题讨论】:
-
为什么不能用已有的数组直接插入到数据库中?
-
因为我需要获取评论的用户名,然后通过另一个数据库找到他的电子邮件将其嵌套在一起,然后将其放入结束数据库。除此之外,在这种情况下,我将不得不执行两个 SQL 查询,一个用于文本,下一个用于使用日期和作者更新第一个
-
而且在这种情况下也没关系,我想知道的是为什么我在最后一个循环中将所有内容加倍。
-
您的 foreach 返回数组中的所有
['text']或['sign'],如$values[1]; $values[2];。echo 'Numer wpisu: '.$z.'<br />'; $z++;。因此它们不会是您要求显示的相同请求的数组中的值的两倍。