Доброй ночи.
Проблема у Вас в строке:
copy($img[1],$_SERVER['DOCUMENT_ROOT']."/sysfiles/45_".$id.$ext);
В $img['1'] попадает '//cdnimg.rg.ru/img/content/138/31/30/pr_t_650x433.jpg'.
Попробуйте сделать так:
copy('https:' . $img[1],$_SERVER['DOCUMENT_ROOT']."/sysfiles/45_".$id.$ext);
Файл будет копироваться без проблем.
И делайте проверки, чтобы можно было самостоятельно определить ошибку.
Сделайте сначала как у Вас сейчас:
if(!copy($img[1],$_SERVER['DOCUMENT_ROOT']."/sysfiles/45_".$id.$ext)){
echo 'error';
}
else{
echo 'success';
}
Без указания протокола передачи данных должно быть предупреждение, добавите https и всё должно заработать.
И посмотрите логи сервера, там должно быть это предупреждение.
И сам pattern регулярного выражения можно подправить.
p.s.
И в строке
preg_match("/link rel=\"image_src\" href=\"(.*)\">/U", $c, $img); -сохранение картинки
нет никакого сохранения/копирования изображения)
p.s.
Этот код
$fh=fopen($_SERVER['DOCUMENT_ROOT']."/scripts/news.txt","w");
fwrite($fh,$c);
fclose($fh);
можно заменить на
file_put_contents()