dusmatoff
@dusmatoff
Web...

Как правильно изменить формат файла через php?

Занимаюсь парсингом одного сайта. Встречается примерно такая ссылка изображения example.com/files/avatar/74eba426146c60555f50b3b89abf1303. То есть, изображение без формата.
Сохраняю у себя на компютер, вручную добавляю в конце .jpg и картинка открывается.

Как это реализовать в php во время парсинга? Часть кода ниже. (Использую https://github.com/Imangazaliev/DiDOM, парсинг делается на WordPress)

<?php
use DiDom\Document;

function runParseFirstTime()
{
    $reviews = get_posts(array('post_type' => 'reviews'));

    if (empty($reviews)) {
        $start = microtime(true);
        //Create DOM
        $url = get_option('parse_url');
        $document = new Document($url, true);
        $opinions = $document->find('.comments-card-list__item'); //Get opinions

        //Parse every opinion
        if (count($opinions) > 0) {
            foreach ($opinions as $opinion) {
                $id = $opinion->getAttribute('id');
                $name = trim($opinion->first('.comment-card__name')->text());
                $date = trim($opinion->first('.date-comment-card')->text());
                $formattedTitle = strip_tags($opinion->first('.comment-card__title'));
                $title = trim($formattedTitle);
                $rating = strip_tags($opinion->first('.rating-stars-card__number'));
                $text = trim($opinion->first('.comment-card__content')->text());
                $imageBlock = $opinion->first('.avatar-comment-card_cottage')->html();
                preg_match('#\((.*?)\)#', $imageBlock, $imageSrc);
                $imageUrl = $imageSrc[1];

                if ( substr($imageUrl, -4, 1) !== '.' ) $imageUrl .= 'jpg';

                //Create review object
                $newReview = array(
                    'post_title' => $name,
                    'post_content' => $text,
                    'post_status' => 'publish',
                    'post_author' => 1,
                    'post_type' => 'reviews',
                    'meta_input' => array(
                        'op_review_id' => $id,
                        'op_review_name' => $name,
                        'op_review_date' => $date,
                        'op_review_title' => $title,
                        'op_review_rating' => $rating,
                        'op_review_image' => $imageUrl,
                    ),
                );

                // Insert the review into the database
                $post_id = wp_insert_post($newReview);

                if (is_wp_error($post_id)) {
                    echo $post_id->get_error_message();
                } else {
                    Generate_Featured_Image('example.com' . $imageUrl, $post_id);
                }
                sleep(1);
            }
        }
    }
}
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
Compolomus
@Compolomus
Комполом-быдлокодер
Есть стандартная функция rename
https://www.php.net/manual/ru/function.rename.php
Можно ещё скачивать и сохранять через gd
$image = imagecreatefromstring(file_get_contents($img));
imagepng($image, '1.png');

https://www.php.net/manual/ru/function.imagepng.php
https://www.php.net/manual/ru/function.imagecreate...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы