ホームページ >php教程 >php手册 >PHP fopen での漢字を含む URL アドレスの読み取りに関する洞察

PHP fopen での漢字を含む URL アドレスの読み取りに関する洞察

WBOY
WBOYオリジナル
2016-06-13 11:57:091090ブラウズ

しかし、昨日画像を読み込むときに問題が発生し、後でURLに中国語が含まれていることがわかりました。

たとえば、次の状況:

コードをコピー コードは次のとおりです:


$files = fopen(' http://www.website.com/MyPP.jpg', 'rb');


「$files」の戻り値は「False」になります。最初に URL を urlencode でエンコードすることを考えましたが、それでもうまくいきませんでした。結局、urlencode は「:」と「/」の文字もエンコードしてしまうため、その URL は URL ではなくなりました。ハハ、それは少し複雑に聞こえるので、「:」と「/」文字のエンコードを置き換えるだけで機能するはずです。

コードをコピー コードは次のとおりです:


$url = 'http://www.website.com/myPP .jpg';
$url = preg_replace('/:/i', ':', preg_replace('///i', '/', urlencode(urldecode($url))); fopen ($url, 'rb');



試してみてください、本当にうまくいきます。 fopen() 関数を確認してみましょう:

fopen() 関数はファイルまたは URL を開きます。 オープンに失敗した場合、この関数は FALSE を返します。 正常に開かれた場合、この関数は TRUE を返します。

1. 構文:

コードをコピーします コードは次のとおりです:

fopen( ファイル名、モード、インクルードパス、コンテキスト)



参数 描述
filename 规定要打开的文件或 URL。
mode 规定要求到该文件/流的访问类型。可能的值见下表。
include_path 如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。
context 规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

2. モードパラメータの可能な値:

モード 説明
"r" 読み取り専用モードで開き、ファイル ポインタをファイル ヘッダーにポイントします。
"r " 読み取り/書き込みモードで開き、ファイル ポインタをファイル ヘッダーにポイントします。
"w" 書き込みモードで開き、ファイル ポインタをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。
"w " 読み取り/書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。
"a" 書き込みモードで開き、ファイル ポインタをファイルの末尾に指します。ファイルが存在しない場合は、作成してみてください。
"a " 読み取り/書き込みモードで開き、ファイル ポインタをファイルの末尾に指します。ファイルが存在しない場合は、作成してみてください。
"x" が作成され、書き込み用に開かれ、ファイル ポインターがファイル ヘッダーを指します。ファイルが既に存在する場合、 fopen() 呼び出しは失敗し、FALSE を返し、E_WARNING レベルのエラー メッセージを生成します。ファイルが存在しない場合は、作成してみてください。
mode 说明
"r" 只读方式打开,将文件指针指向文件头。
"r " 读写方式打开,将文件指针指向文件头。
"w" 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"w " 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"a" 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"a " 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"x" 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
"x " 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。
这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
これは、基礎となる open(2) システム コールに O_EXCL|O_CREAT フラグを指定するのと同じです。 このオプションは PHP 4.3.2 以降のバージョンでサポートされており、ローカル ファイルにのみ使用できます。
"x " が作成され、読み取りと書き込みのために開かれ、ファイル ポインターがファイル ヘッダーを指します。ファイルが既に存在する場合、 fopen() 呼び出しは失敗し、FALSE を返し、E_WARNING レベルのエラー メッセージを生成します。ファイルが存在しない場合は、作成してみてください。 これは、基礎となる open(2) システム コールに O_EXCL|O_CREAT フラグを指定するのと同じです。 このオプションは PHP 4.3.2 以降のバージョンでサポートされており、ローカル ファイルにのみ使用できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。