Задать вопрос
AllDecay
@AllDecay
Вечно отдыхающий.

Как сделать проверку переменной на список запрещенных значений?

$url = array();
for($page_counter = 1; $page_counter <= 2; $page_counter++)
{
preg_match_all('/<a class="thumb_image" href="(.*?)"/si' ,file_get_contents("http://e-shuushuu.net/?page=".$page_counter),$aResult);
array_push($url, $aResult[1]);
}
$i = mt_rand(0, count($url) - 1);
$j = mt_rand(0, count($url[$i]) - 1);
$randomUrl = $url[$i][$j];

$token = '';
$user_id = null;
$group_id = null;

$text = '';
$image = 'http://e-shuushuu.net/'.$randomUrl;

try {
    $vk = \vkApi\vk::create($token);
    $post = new \vkApi\post($vk, $user_id, $group_id);
    $post->post($text, $image);
    echo 'Success!';
} catch(Exception $e){
    echo 'Error: <b>' . $e->getMessage() . '</b><br />';
    echo 'in file "' . $e->getFile() . '" on line ' . $e->getLine();
}

Вот не весь код конечно, но то что нужно реализовать, должно находится именно здесь. Так вот, код парсит url случайных изображений с нескольких страниц сайта в многомерный массив и берет из него случайную ссылку и публикует изображение в группу ВК. Как реализовать добавление использованных url в некий список, который в свою очередь нужно проверять на совпадения. Проще говоря: как избежать постов с одинаковыми изображениями?
  • Вопрос задан
  • 221 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Stalker_RED
@Stalker_RED
Нужно записывать куда-нибудь, какие изображения уже были использованы. В базу данных или в файл, например.
Затем, перед публикацией, делать проверку - не находится ли файл в списке опубликованных.

Или, еще лучше - сохранить все найденные ссылки, а к опубликованным добавить флаг "опубликовано".
Ответ написан
Комментировать
@Silm
А зачем вам многомерный массив?

Записывайте куда нибудь, лучше в БД, собранные изображения. Записывайте адрес изображения и md5 хеш от него. Потом по хешу будет удобнее искать дубли или конкретные изображения. Дальше можете делать с этим списком что угодно, можно удалять из него использованные адреса или ставить на них метки или число использования и тп
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AllDecay
@AllDecay Автор вопроса
Вечно отдыхающий.
Вот что-то попытался написать, но не работает. Пытался выводить все данные из таблицы и отдельно id - не выходит.
$db = mysql_connect('localhost','root','');
mysql_select_db('images', $db);

$url = array();
for($page_counter = 1; $page_counter <= 2; $page_counter++)
{
preg_match_all('/<a class="thumb_image" href="(.*?)"/si' ,file_get_contents("http://e-shuushuu.net/?page=".$page_counter),$aResult);
array_push($url, $aResult[1]);
}
$i = mt_rand(0, count($url) - 1);
$j = mt_rand(0, count($url[$i]) - 1);
$randomUrl = $url[$i][$j];
$names = substr(strstr($randomUrl, '-'), 7, strlen($randomUrl));
$imageID = explode(".", $names);
$check = mysql_query("SELECT * FROM images",$db);
while($row = mysql_fetch_array($check)) {
    if ($row[' id '] == $imageID) {
        $found = true;
        break;
    }
}
if (!$found) {
try {
    $vk = \vkApi\vk::create($token);
    $post = new \vkApi\post($vk, $user_id, $group_id);
    $post->post($text, $image);
	mysql_query ("INSERT INTO images (id, url) VALUES ('$imageID[0]', 'http://e-shuushuu.net$randomUrl')");
    echo 'Success!';
} catch(Exception $e){
    echo 'Error: <b>' . $e->getMessage() . '</b><br />';
    echo 'in file "' . $e->getFile() . '" on line ' . $e->getLine();
	}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы