Занимаюсь парсингом одного сайта. Встречается примерно такая ссылка изображения
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);
}
}
}
}