2017-12-01 4 views
1

PHPのcopy()関数に問題があります。PHPでcopy()が中括弧/括弧で囲まれたURLで失敗する

ローカルドライブにhttps://example.co.uk/{8d988e90-a325-4a1c-a340-a489166286b8}/{14409287-2c29-4b51-91e4-0891b5619659}/main/imgnew-(2).jpgのようなリモートURLをコピーする必要があります。

$replace = array('%7B', '%7D','%28','%29'); 
$entities = array('{', '}','(',')'); 
$RemoteURL = str_replace($entities, $replace, "https://example.co.uk/{8d988e90-a325-4a1c-a340-a489166286b8}/{14409287-2c29-4b51-91e4-0891b5619659}/main/imgnew-(2).jpg"); 

$PicName = "new.jpg" 

if(copy($RemoteURL,"C:\Users\Me\Downloads\Pictures\" . $PicName)){ 
    echo "<script>console.log(\"(" . $RemoteURL . ") copied to waiting.\")</script>"; 
} else { 
    echo "<p class='float red'>READ ERROR</p>"; 
} 

しかし、これはエラーをスロー:

Warning: copy(https://example.co.uk/%7B8d988e90-a325-4a1c-a340-a489166286b8%7B/%7B14409287-2c29-4b51-91e4-0891b5619659%7B/main/imgnew-%282%29.jpg): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found 

それはどのようなものです。ここ

$ RemoteURL変数のためのいくつかのコンテキストとともに、失敗した私のコードの一部です。ちょうど私がここで行方不明になっているか、PHPがURL自体について気に入らないのは何ですか?

+0

マイブラウザエンコード{と}ではなく、():

Eは特定の部品を交換する機能を作成することによって固定した誤差を与えました –

+0

@ MaximKrizhanovsky()を削除するだけではうまくいきませんでした。 – Cawley

答えて

0

これがお手伝いしますurl_encode();

希望を使用してみてください。

おかげで、

+0

これはうまくいかず、すべてのシンボルを交換し、すべてのコピーで失敗しました。しかし、提案していただきありがとうございます – Cawley

1

は、上記のエラーを生成された問題は、私は問題があったアクセント付き文字を持っていたことが判明しました。あなたがこの部分を削除しようとすることができるので、

function URLEncodeRules($string) { 
    $replacements = array('%C3%A9','%C3%A8'); 
    $entities = array('é','è'); 
    return str_replace($entities, $replacements, $string); 
} 

$RemoteURL = URLEncodeRules($CaptureRow['URL']); 

if(copy($RemoteURL,"image.jpg")){ 
    echo "Success!; 
}