找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2017|回复: 0

[教程] PHP查询字符串技巧分享

[复制链接]
发表于 2013-4-9 13:01:28 | 显示全部楼层 |阅读模式 来自 中国–广东–湛江
对于一个经验丰富的PHP程序员来说,实现字符串的查询功能已经不是什么难事了。在这里我们将会介绍一种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 = 'http://www.example.com?' .
        $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://www.example.com?' .
         http_build_query($fields, '', '&');
           
            在上面这个PHP查询字符串例子中,数组包含了变量名和变量值。你也可以传入只含变量值的数组,函数会使用你提供的变量名(通
            过函数的第二个参数传入)加上数组的索引值构造变量名。比如说你要传递六个城市名,可以象下面这么做。
          $fields = array('paris',
        'new york',
        'florence',
        'london',
        'berlin',
        'delhi');
        $url = 'http:/
        /www.example.php?' .
        http_build_query($fields,
         'city', '&');
           
            产生的url如下:
            http://www.example.php/?city0=pa ... lin&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://www.example.php?' .
        http_build_query($fields, '', '&');
           
            它将生成以下URL:
            http://www.example.com?city=new+ ... amp;paid%5Breceipt%
            5D=fgf44545
            总而言之,http_build_query()确实可以简化GET进行PHP查询字符串的构造。

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-3 03:28 , Processed in 0.054506 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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