|
例如下面這種情況:
復(fù)制代碼 代碼如下:
$files = fopen('http://www.website.com/我的PP.jpg', 'rb');
那“$files”的返回值將會(huì)是“False”。首先我想到的是將URL用urlencode編碼一下,發(fā)現(xiàn)還是不行,原來(lái)urlencode會(huì)把“:”、“/”字符也編碼了,那URL就不是URL了。呵,說(shuō)得有些繞口,那就把“:”、“/”字符的編碼替換回來(lái)就應(yīng)該行的。
復(fù)制代碼 代碼如下:
$url = 'http://www.website.com/我的PP.jpg';
$url = preg_replace('//%3A/i', ':', preg_replace('//%2F/i', '/', urlencode(urldecode($url)))); $file = fopen($url, 'rb');
試試,嘿~還真是行了。下面再溫習(xí)一下fopen()函數(shù):
fopen() 函數(shù)打開(kāi)文件或者URL。 如果打開(kāi)失敗,本函數(shù)返回FALSE。 打開(kāi)成功,本函數(shù)返回TRUE。
一、語(yǔ)法:
復(fù)制代碼 代碼如下:fopen(filename, mode, include_path, context)
參數(shù) | 描述 |
filename | 規(guī)定要打開(kāi)的文件或 URL。 |
mode | 規(guī)定要求到該文件/流的訪問(wèn)類型。可能的值見(jiàn)下表。 |
include_path | 如果也需要在 include_path 中檢索文件的話,可以將該參數(shù)設(shè)為 1 或 TRUE。 |
context | 規(guī)定文件句柄的環(huán)境。Context 是可以修改流的行為的一套選項(xiàng)。 |
二、mode 參數(shù)的可能的值:
mode | 說(shuō)明 |
"r" | 只讀方式打開(kāi),將文件指針指向文件頭。 |
"r+" | 讀寫(xiě)方式打開(kāi),將文件指針指向文件頭。 |
"w" | 寫(xiě)入方式打開(kāi),將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。 |
"w+" | 讀寫(xiě)方式打開(kāi),將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。 |
"a" | 寫(xiě)入方式打開(kāi),將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。 |
"a+" | 讀寫(xiě)方式打開(kāi),將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。 |
"x" | 創(chuàng)建并以寫(xiě)入方式打開(kāi),將文件指針指向文件頭。如果文件已存在,則 fopen() 調(diào)用失敗并返回 FALSE,并生成一條 E_WARNING 級(jí)別的錯(cuò)誤信息。如果文件不存在則嘗試創(chuàng)建之。 這和給底層的 open(2) 系統(tǒng)調(diào)用指定 O_EXCL|O_CREAT 標(biāo)記是等價(jià)的。 此選項(xiàng)被 php 4.3.2 以及以后的版本所支持,僅能用于本地文件。 |
"x+" | 創(chuàng)建并以讀寫(xiě)方式打開(kāi),將文件指針指向文件頭。如果文件已存在,則 fopen() 調(diào)用失敗并返回 FALSE,并生成一條 E_WARNING 級(jí)別的錯(cuò)誤信息。如果文件不存在則嘗試創(chuàng)建之。 這和給底層的 open(2) 系統(tǒng)調(diào)用指定 O_EXCL|O_CREAT 標(biāo)記是等價(jià)的。 此選項(xiàng)被 php 4.3.2 以及以后的版本所支持,僅能用于本地文件。 |
php技術(shù):PHP fopen 讀取帶中文URL地址的一點(diǎn)見(jiàn)解,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。