Я работаю над небольшим скребком для удовольствия, и когда я беру некоторые URL-адреса изображений с определенных сайтов, они возвращаются очень странно.
Например:
очищенный URL:
https:\/\/cdn1.vox-cdn.com\/thumbor\/zN9XawbQJgFPkuAcA2JEGgqApm8=\/cdn0.vox-cdn.com\/uploads\/chorus_asset\/file\/3700712\/tomorrowland54fdf04f23efb_2040.0.jpg
желаемый URL:
https://cdn1.vox-cdn.com/thumbor/zN9XawbQJgFPkuAcA2JEGgqApm8=/cdn0.vox-cdn.com/uploads/chorus_asset/file/3700712/tomorrowland54fdf04f23efb_2040.0.jpg
он добавляет ненужные обратные слэши, поэтому, когда вы следите за ним, URL не работает, он выдает ошибку.
Я попытался использовать функцию stripslashes, так как кажется, что это ее цель, но она не сработала. URL просто остался прежним.
(изменить) вот код, который я использую, чтобы захватить URL:
function GetImages($page_dom) {
$found_links = [];
$images = $page_dom->getElementsByTagName('img');
foreach ($images as $image) {
$img_src = $image->getAttribute('src');
$found_links[] = $img_src;
}
return $found_links;
}
Когда вы звоните json_encode
, использовать JSON_UNESCAPED_SLASHES
возможность не допустить попадания слешей.
Но это не должно быть на самом деле необходимо. Если вы выводите JSON, вы должны отправить его в программу, которая анализирует JSON, и анализатор JSON переведет \/
в /
,
если это единственный шаблон, который вы ожидаете, вы можете использовать str_replace('\/', '/', $url)
Вы также можете использовать str_replace(array('\/', '\\'), array('/', '\'), $url)
для большего количества моделей
Ты можешь использовать str_replace и вам нужно избежать обратной косой черты, т.е.
$url = "https:\/\/cdn1.vox-cdn.com\/thumbor\/zN9XawbQJgFPkuAcA2JEGgqApm8=\/cdn0.vox-cdn.com\/uploads\/chorus_asset\/file\/3700712\/tomorrowland54fdf04f23efb_2040.0.jpg" ;
echo str_replace("\\/", "/", $url);
https://cdn1.vox-cdn.com/thumbor/zN9XawbQJgFPkuAcA2JEGgqApm8=/cdn0.vox-cdn.com/uploads/chorus_asset/file/3700712/tomorrowland54fdf04f23efb_2040.0.jpg