PHP fopen 读取带中文URL地址的一点见解
2012-09-25 23:38
519 查看
但昨天在读取一张图片的时候出问题了,后来发现是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)
例如下面这种情况:
复制代码 代码如下:
$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 以及以后的版本所支持,仅能用于本地文件。 |
您可能感兴趣的文章:
- PHP使用fopen与file_get_contents读取文件实例分享
- PHP中通过fopen()函数访问远程文件示例
- php使用fopen创建utf8编码文件的方法
- php中file_get_content 和curl以及fopen 效率分析
- PHP fopen()和 file_get_contents()应用与差异介绍
- php读取本地文件常用函数(fopen与file_get_contents)
- php打开文件fopen函数的使用说明
- 解析php中的fopen()函数用打开文件模式说明
- PHP读取网页文件内容的实现代码(fopen,curl等)
- PHP 获取远程网页内容的代码(fopen,curl已测)
- php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
- php 使用fopen函数创建、打开文件详解及实例代码
相关文章推荐
- PHP fopen 读取带中文URL地址的一点见解
- PHP fopen读取url内容
- PHP读取指定URL网页地址中的所有链接
- php 接口安全检查--防止url链接或者接口地址暴露后,网站被恶意攻击
- URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)
- thinkphp-url地址影藏入口文件index.php
- PHP将URL地址参数进行加密传输提高网站安全性
- php 读取xml的方法 (iconv解决中文乱码问题)
- asp.net中url地址传送中文参数时的两种解决方案(downmoon)
- php正则表达式替换URL链接地址为指定url的形式
- PHP基于curl post实现发送url及相关中文乱码问题解决方法
- 解决URL地址中的中文乱码问题的办法
- asp.net中url地址传送中文参数时的两种解决方案
- php读取网络文件curl,fsockopen,file_get_contents,file,fopen几种方法
- php向html里传递数据,数据内容是url地址
- php开发中的url地址传输加密解密函数
- php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
- URL地址中的中文乱码问题的解决
- php获取url中文字符乱码
- PHP使用fopen与file_get_contents读取文件实例分享