私は、実行するたびにファイルのリストをファイルに保存するスクリプトを作成しています。PHP - 変数値がファイルに存在するかどうかをチェック
スクリプトが実行されるたびに、ファイルをチェックし、URLがファイルに含まれていない場合は、そのURLをFacebookに投稿する必要があります。 URLが既にファイルにある場合、それはFacebookに投稿すべきではありません。
今のところ、スクリプトが実行されるたびに、URLがすでにファイルに入っていても1つのURLがFacebookに投稿されています。私が間違っているのかわからない:すべての行
<?php
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__.'/src/Facebook/');
require_once(__DIR__.'/src/Facebook/autoload.php');
require('simple_html_dom.php');
$fb = new Facebook\Facebook([
'app_id' => 'xxxxxxxx',
'app_secret' => 'xxxxxxxx',
'default_graph_version' => 'v2.8',
]);
$html = file_get_html('https://www.trulia.com/for_sale/McKinney,TX/300000p_price/SINGLE-FAMILY_HOME_type/date;d_sort/');
$houses = [];
$i = 1;
foreach ($html->find('.cardContainer') as $house) {
if ($i > 2) {
break;
}
$houseLink = $house->find('a.tileLink', 0);
$houseUrl = 'https://trulia.com' . $houseLink->href;
file_put_contents("houses.txt", ($houseUrl . "\n"), FILE_APPEND);
$singleHouseHtml = file_get_html("{$houseUrl}");
$singleHouseHtmlDesc = $singleHouseHtml->find('span#corepropertydescription', 0);
$singleHouseHtmlDescText = $singleHouseHtmlDesc->plaintext;
$houseFile = file_get_contents("houses.txt");
if(strpos($houseFile, $houseUrl) == false) {
$linkData = [
'link' => $houseUrl,
'message' => $singleHouseHtmlDescText
];
$pageAccessToken ='xxxxxxxxx';
try {
$response = $fb->post('/me/feed', $linkData, $pageAccessToken);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: '.$e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: '.$e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();
}
$houses[] = [
'url' => $houseUrl,
'desc' => $singleHouseHtmlDesc
];
$i++;
}
var_dump($houses);
これが正しい答えではないかもしれないが、これは私が追加するのではなく、何をするのかであります新しい行を使ってファイルに新しいURLを書き込む... csvを使うと、あなたが実行しているすべての.cardContainerについて、より簡単な仕事を読めるようになるでしょう。I/Oなぜかスクリプトの一番上にいれば、 csvを配列に変換してから、配列が存在するかどうかを確認して配列が存在しない場合はそれを配列に代入します。そうでない場合は配列の最後に新しい配列を追加しますcsvへの配列。 –