查看: 9232|回复: 0

PHP查询字符串技巧分享

[复制链接]
发表于 2012-6-8 12:41:02 | 显示全部楼层 |阅读模式
台州网址导航
对于一个经验丰富的PHP程序员来说,实现字符串的查询功能已经不是什么难事了。在这里我们将会介绍一种PHP查询字符串的捷径技巧,供大家参考。
   
    深入解读PHP插件机制原理
   
    探讨PHP变量解析顺序如何获取提交数据
   
    深入解读PHP运行机制
   
    浅析PHP函数extract()应用技巧
   
    为你总结一些PHP信息函数
   
    RL传递变量对于程序员来说已经是司空见惯的事情,很多人会因此认为本文毫无新意。我们把通过URL传递变量的方式称作GET方式,另外一种是POST方式。这两种方式在PHP中都非常容易实现。举个例子,假设准备进行数据库查询,需要通过GET传递三个变量:city、id和paid.
   
    传统的PHP查询字符串方法是象下面的例子那样构造查询字符串:
   
    /* assume we want to pass this
   
    variables */
   
    $city_name = "new york";
   
    $invoice_id = 3456;
   
    $paid = 1;
   
    $query_string = "city={$city_name}
   
    &id={$invoice_id}&paid={$paid}";
   
    $url  .
   
    $query_string;
   
    如今大部分PHP开发者都已经习惯于上面这种方法。它在只有三四个变量的时候毫无问题,但是再增加变量的话,代码将变得难以理解和维护,并容易引入细微的错误。
   
    传递GET变量的最佳方式是通过PHP5中引入的http_build_query函数,它接收一个数组参数,返回一个格式正确、经过URL编码的字符串,可以直接拼接在url中。下面是相应的PHP查询字符串例子。
   
    $city_name = "new york";
   
    $invoice_id = 3456;
   
    $paid = 1;
   
    $fields = array('city' => $city_name,
   
    'id' => $invoice_id,
   
    'paid' => $paid);
   
    $url
   
    . http_build_query($fields, '', "&");
   
    在上面这个PHP查询字符串例子中,数组包含了变量名和变量值。你也可以传入只含变量值的数组,函数会使用你提供的变量名(通过函数的第二个参数传入)加上数组的索引值构造变量名。比如说你要传递六个城市名,可以象下面这么做。
   
    $fields = array('paris',
   
    'new york',
   
    'florence',
   
    'london',
   
    'berlin',
   
    'delhi');
   
    $url  .
   
    http_build_query($fields, 'city', "&");
   
    产生的url如下:
   
    example.php/?city0=paris&city1=new+york&city2=florence&city3=london&city4=berlin&city5=delhi
   
    (译注:如果数组元素的key不是默认的整数,那么key就作为对应值的变量名,而象上面例子,数组的key是默认的整数,那么变量名是函数第二个参数加上元素的key,所以第一个变量名就是city0)
   
    PHP查询字符串函数的第三个参数是可选参数,表示变量的分隔符,默认值是'&'.不过我更喜欢显式的传入这个'&'分隔符。
   
    此外还可以传入一个复杂的数组:
   
    $city_name = "new york";
   
    $invoice_id = 3456;
   
    $currency_name = "euro";
   
    $total = 345;
   
    $receipt_no = "fgf44545";
   
    $fields = array('city' => $city_name,
   
    'id' => $invoice_id,
   
    'paid' => array('currency' => $currency_name,
   
    'amount' => $total,
   
    'receipt' => $receipt_no)
   
    );
   
    $url  .
   
    http_build_query($fields, '', "&");
   
    它将生成以下URL:
   
    example.com?city=new+york&id=3456&paid%5Bcurrency%5D=euro&paid%5Bamount%5D=345&paid%5Breceipt%
   
    5D=fgf44545
   
    总而言之,http_build_query()确实可以简化GET进行PHP查询字符串的构造。
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表