テーブルからCSVファイルにデータを送信する際に問題があります。CSVファイルへの特定の配列
Array
[link1] => HTTP Code
[link2] => HTTP Code
[link3] => HTTP Code
[link4] => HTTP Code
リンクが再発しないようにデータをCSVファイルに送信する必要があります。 残念ながら、リンクの後にリンクを送信する方法(私はforeachループで働く)を知り、これらのリンクのそれぞれを抽出してCSVに送信すると同時に、すでに表示されていないチェックを行います。
これは私のコードです:
require('simple/simple_html_dom.php');
$xml = simplexml_load_file('https://www.gutscheinpony.de/sitemap.xml');
$fp = fopen('Links2.csv', 'w');
set_time_limit(0);
$links=[];
foreach ($xml->url as $link_url)
{
$url = $link_url->loc;
$data=file_get_html($url);
$data = strip_tags($data,"<a>");
$d = preg_split("/<\/a>/",$data);
foreach ($d as $k=>$u){
if(strpos($u, "<a href=") !== FALSE){
$u = preg_replace("/.*<a\s+href=\"/sm","",$u);
$u = preg_replace("/\".*/","",$u);
if (strpos($u, "http") !== FALSE) {
$ch = curl_init($u);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if(strpos($u, "https://www.gutscheinpony.de/") !== FALSE)
$u = substr($u, 28);
if($u == "/")
$u = $url;
}
$links[$u] = $http_code;
$wynik = array(array($u, $url , $http_code));
foreach ($wynik as $fields) {
fputcsv($fp, $fields);
}
}
}
}
curl_close($ch);
fclose($fp);
echo 'Send to CSV file successfully completed ... ';
私は.xmlファイルからのすべてのリンクを取得し、同じページ上にあるダウンロードリンクとHTTPのステータスを指定する必要があります。私が行ったこの部分。私はCSVファイルにデータを送る適切な方法だけではありません。
私はあなたの助けを頼りにしています。
fputscsvを使用する前に、 '$ wynik = array(array) 'から1つの配列()を削除してみてください。 '$ wynik = array()'が一度だけ返されます – JustOnUnderMillions
fputcsv()foreachループをリンク処理ループの後、つまりその外側に置くことはできませんか? $ wynikはもちろん大きくなりますので、あなたにはメモリが用意されています。また、$ urlをキーとして、それを結合配列にします。そうすれば、各$ url値は1回だけ書き込まれます。 –