热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php中url函数介绍及使用示例

本文主要介绍了PHP处理url字符串编码、解码与解析。下面进行详细的举例说明

本文主要介绍了PHP处理url字符串编码、解码与解析。下面进行详细的举例说明

base64_encode — 使用 MIME base64 对数据进行编码
base64_encode() returns 使用 base64 对 data 进行编码。设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
Base64-encoded 数据要比原始数据多占用 33% 左右的空间。

代码如下:


$str = 'This is an encoded string';
// VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==
echo base64_encode($str);
?>

base64_decode — 对使用 MIME base64 编码的数据进行解码
base64_decode() 对 encoded_data 进行解码,返回原始数据,失败则返回 FALSE。返回的数据可能是二进制的。

代码如下:


$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
// This is an encoded string
echo base64_decode($str);
?>

get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头
get_headers() 返回一个数组,包含有服务器响应一个 HTTP 请求所发送的标头。如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息。
如果将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名。

代码如下:


$phpha1 = get_headers('http://www.jb51.net');
$phpha2 = get_headers('http://www.jb51.net', 1);
print_r($phpha1);
print_r($phpha2);
?>

输出如下:

代码如下:


Array
(
[0] => HTTP/1.1 200 OK
[1] => Server: nginx/1.2.2
[2] => Date: Tue, 06 Nov 2012 10:17:59 GMT
[3] => Content-Type: text/html; charset=UTF-8
[4] => Connection: close
[5] => X-Powered-By: PHP/5.3.8
[6] => X-Pingback:
[7] => Via: 10.67.15.26
[8] => Set-COOKIE: saeut=124.127.138.35.1352197078737175; path=/; max-age=311040000
)
Array
(
[0] => HTTP/1.1 200 OK
[Server] => nginx/1.2.2
[Date] => Tue, 06 Nov 2012 10:17:59 GMT
[Content-Type] => text/html; charset=UTF-8
[Connection] => close
[X-Powered-By] => PHP/5.3.8
[X-Pingback] =>
[Via] => 10.67.15.21
[Set-COOKIE] => saeut=124.127.138.35.1352197079055460; path=/; max-age=311040000
)

get_meta_tags — 从一个文件中提取所有的 meta 标签 content 属性,返回一个数组
可以想象的到,某些网站可以方便的用此函数进行网站SEO信息的提取。

代码如下:


//天涯PHP博客
$phpha = get_meta_tags('http://www.jb51.net');
print_r($phpha);
?>

输出如下:

代码如下:


Array
(
[keywords] => 天涯博客,PHP博客,PHP技术博客,PHP学习博客,PHP开发博客
[description] => 天涯PHP博客是以PHP为主的学习博客,记载PHPER的学习历程,关注互联网最新发展动态。
[generator] => WordPress 3.2.1
)

http_build_query — 生成 URL-encode 之后的请求字符串

$url = array('c'=>'blog', 'a'=>'show', 'id'=>10, 'hello', 'world');
// c=blog&a=show&id=10&0=hello&1=world
echo http_build_query($url);
// c=blog&a=show&id=10&phpha_0=hello&phpha_1=world
echo http_build_query($url, 'jb51_');
?>
[/code]

这个函数目前我用的最多的地方就是做各种API时,组合请求的url,非常的方便。
另外可以看到,对于数组内数字索引的成员,还可以指定前缀。

parse_url — 解析 URL,返回其组成部分
本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受,,parse_url() 会尝试尽量正确地将其解析。

代码如下:


$url = 'http://tianya:jb51.net@jb51.com/hello.php?id=10#nav';
print_r(parse_url($url));
?>
Array
(
[scheme] => http
[host] => phpha.com
[user] => tianya
[pass] => phphadotcom
[path] => /hello.php
[query] => id=10
[fragment] => nav
)

rawurlencode — 按照 RFC 1738 对 URL 进行编码
rawurldecode — 对已编码的 URL 字符串进行解码
urlencode — 编码 URL 字符串
urldecode — 解码已编码的 URL 字符串

代码如下:


$url = 'http://www.jb51.net tianya';
echo urlencode($url);
echo '
';
echo rawurlencode($url);
echo '
';
echo urldecode($url);
echo '
';
echo rawurldecode($url);
?>

输出如下:

代码如下:


http%3A%2F%2F+tianya
http%3A%2F%2F%20tianya

可以看到,urlencode与rawurlencode的区别在于:
urlencode() 会把空格编码为加号(+),rawurlencode() 则把空格编码为 %20
urldecode()和rawurldecode() 则为对应的解码函数。

推荐阅读
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Dockerfile构建镜像的指令和说明
    本文介绍了Dockerfile是用来构建镜像的文本文件,其中包含了构建镜像所需的指令和说明。通过创建一个Dockerfile文件并编写内容,可以快速创建自定义的镜像。文章还提供了一个示例,展示了如何使用Dockerfile创建一个本地构建的nginx镜像,并通过docker images命令查看镜像的版本。希望本文对大家的学习有所帮助,并希望大家多多支持编程笔记。 ... [详细]
author-avatar
书友56952614
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有