PHP fopen 读取带中文URL地址的一点见解_PHP
但昨天在读取一张图片的时候出问题了,后来发现是URL里带中文字符。
例如下面这种情况:
复制代码 代码如下:
$files = fopen('http://www.website.com/我的PP.jpg', 'rb');
那“$files”的返回值将会是“False”。首先我想到的是将URL用urlencode编码一下,发现还是不行,原来urlencode会把“:”、“/”字符也编码了,那URL就不是URL了。呵,说得有些绕口,那就把“:”、“/”字符的编码替换回来就应该行的。
复制代码 代码如下:
$url = 'http://www.website.com/我的PP.jpg';
$url = preg_replace('/\%3A/i', ':', preg_replace('/\%2F/i', '/', urlencode(urldecode($url)))); $file = fopen($url, 'rb');
试试,嘿~还真是行了。下面再温习一下fopen()函数:
fopen() 函数打开文件或者URL。 如果打开失败,本函数返回FALSE。 打开成功,本函数返回TRUE。
一、语法:
复制代码 代码如下:fopen(filename, mode, include_path, context)
参数 | 描述 |
filename | 规定要打开的文件或 URL。 |
mode | 规定要求到该文件/流的访问类型。可能的值见下表。 |
include_path | 如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。 |
context | 规定文件句柄的环境。Context 是可以修改流的行为的一套选项。 |
二、mode 参数的可能的值:
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 以及以后的版本所支持,仅能用于本地文件。 |

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk menyelesaikan PHPWarning:fopen():failedtoopenstream:Nosuchfileordirectory Dalam proses menggunakan pembangunan PHP, kita sering menghadapi beberapa masalah pengendalian fail, salah satunya ialah "PHPWarning:fopen():failedtoopenstream:Nosuchfileordirectory"

Bagaimana untuk menyelesaikan PHPWarning:fopen():SSLoperationfailedinfile.phponlineX Dalam pengaturcaraan PHP, kami sering menggunakan fungsi fopen untuk membuka fail atau URL dan melaksanakan operasi yang berkaitan. Walau bagaimanapun, apabila menggunakan fungsi fopen, kadangkala anda akan menghadapi sesuatu yang serupa dengan Warning:fopen():SSLoperationfailedinfile.p

Bagaimana untuk menyelesaikan PHPWarning:fopen():failedtoopenstream:Permissiondenied Dalam proses membangunkan atur cara PHP, kita sering menghadapi beberapa mesej ralat, seperti PHPWarning:fopen():failedtoopenstream:Permissiondenied. Ralat ini biasanya disebabkan oleh kebenaran fail atau direktori yang salah

Dalam Matlab, fungsi fopen digunakan untuk membuka fail dan mengembalikan pengecam fail untuk operasi membaca atau menulis seterusnya pada fail. Pilih pilihan kebenaran yang sesuai untuk membuka fail seperti yang diperlukan, dan segera tutup fail apabila operasi selesai. Perlu diingatkan bahawa selepas membuka fail, anda perlu memastikan bahawa fail itu ditutup dalam masa apabila ia tidak lagi diperlukan untuk melepaskan sumber sistem. Di samping itu, jika pembukaan fail gagal atau ralat operasi berlaku, mekanisme pengendalian ralat boleh digunakan untuk mengendalikannya dengan sewajarnya.

Dalam pembangunan PHP, operasi fail adalah sangat biasa. Dalam keadaan biasa, kita perlu melakukan operasi membaca, menulis, memadam dan lain-lain fail. Antaranya, fungsi fopen dan fungsi fread boleh digunakan untuk membaca fail, dan fungsi fopen, fungsi fwrite dan fungsi fclose boleh digunakan untuk menulis fail. Artikel ini akan memperkenalkan cara PHP menggunakan fopen, fwrite dan fclose untuk melaksanakan operasi fail. 1. fungsi fopen Fungsi fopen digunakan untuk membuka fail Sintaksnya adalah seperti berikut: r

Kaedah fopen() dalam C digunakan untuk membuka fail yang ditentukan. Mari kita ambil contoh untuk memahami sintaks masalah FILE*fopen(nama fail, mod yang berikut adalah mod yang sah untuk menggunakan fopen() untuk membuka fail: 'r', 'w', 'a', 'r+', 'w+. ', 'a+'. Untuk maklumat lanjut, sila lawati fungsi perpustakaan C-fopen()

Bagaimana untuk menyelesaikan PHPWarning:fopen():failedtoopenstream:Nosuchfileordirectoryinfile.phponlineX Apabila membangunkan dan menjalankan program PHP, kadangkala kita menghadapi PHPWarning:fopen():failedtoopenstream:Nosuchfileor

Penggunaan fungsi fopen dalam php ialah "fopen(nama fail, mod, include_path, konteks)". Fungsi fopen() digunakan untuk membuka fail atau URL Jika gagal, ia mengembalikan palsu dengan mesej ralat.
