手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:parse_str

JS的几个简单互换[处理URL]

js没有parse_str这个函数,因此,对于querystring就要自己写了。
还好,在location这个对象里,对于querystring都是包含着的。于是乎就有了下面两个处理方式,很简单,没有做任何转换。。。只是演示而己

XML/HTML代码
  1. var param1 = 'name=123&psw=321&sex=男';  
  2. var param2 = {name: '123',psw: '321', sex: '男'};  

从param1转为param2

JavaScript代码
  1. var param1 = 'name=123&psw=321&sex=男';    
  2. var s = param1.split("&");    
  3. var param2 = {};    
  4. for(var i=0;i<s.length;i++){    
  5.    var d=s[i].split("=");    
  6.    eval("param2."+d[0]+" = '"+d[1]+"';");    
  7. }    
  8. //可以用for循环打印 param2    
  9. for(i in param2){    
  10.     alert(i+' -- '+param2[i]);    
  11. }   

从param2转为param1

JavaScript代码
  1. var arr = [];  
  2. for(i in param2){  
  3.    arr.push( i + "=" + param2[i]); //根据需要这里可以考虑escape之类的操作  
  4. }  
  5. alert(arr.join("&"))  

 当然应该有更好的办法,我这里只是简单处理一下

Tags: parse_str

PHP获取当前网址/替换网址query中的值

这是一篇来自虫少侠的文章,事实上我也写过类似的。不过我当初是用在模版里,写在模版里为smarty中的。。。用法大致为{$url|urlreplace:"abc=def"},也就是把url里abc的键值换为Def,这样就避免在参数过多的时候,我一一输入了。。适合用在搜索后,一些Tag标签的切换等。。。。

下面就是虫少侠的内容了:

项目中用到的两个函数,自己写了下,放这做为备份吧。

一是PHP获取当前页面的网址:

PHP代码
  1. //获得当前的脚本网址【我稍整理了一下。。。鄙视不整理代码的人】  
  2. function GetCurUrl(){  
  3.     if(!emptyempty($_SERVER["REQUEST_URI"])){  
  4.         $scriptName = $_SERVER["REQUEST_URI"];  
  5.         $nowurl = $scriptName;  
  6.     }else{  
  7.         $scriptName = $_SERVER["PHP_SELF"];  
  8.         if(emptyempty($_SERVER["QUERY_STRING"])) $nowurl = $scriptName;  
  9.         else $nowurl = $scriptName."?".$_SERVER["QUERY_STRING"];  
  10.     }  
  11.     return $nowurl;  
  12. }  

另一个是PHP替换网址中query部分的某变量的值比如 ,我们要设$url中的key=321;

其实有几种情况:

$url=’www.sina.com/a.php?key=330′;

或$url=’www.sina.com/a.php;

或$url=’www.sina.com/a.php?cat=2′;

等等。虽然情况很多,但PHP处理起来非常简单,如下:

PHP代码
  1. /* 将URL中的某参数设为某值*/ //【这一段就挺好啊】  
  2. function url_set_value($url,$key,$value)  
  3. {  
  4.     $a=explode('?',$url);  
  5.     $url_f=$a[0];  
  6.     $query=$a[1];  
  7.     parse_str($query,$arr);  
  8.     $arr[$key]=$value;  
  9.     return $url_f.'?'.http_build_query($arr);  
  10. }  

原文来自:http://roln.cn/2009/07/30/lamp/some-php-url-function/

不过我的替换是这样写的。。当然也很烂 。。

PHP代码
  1. <?php  
  2. /** 
  3.  *使用例程:可用于分页类或页面中的替换等 
  4.     $url = "add_jd.php?pid=4&tb=gm_jd&page=1"; 
  5.     echo( "原始的URL:" . $url ); 
  6.     echo( '<br/>' ); 
  7.     echo( "字符串参数:" . url::replace( $url , "pid=10,page=2") ); 
  8.     echo( '<br/>' ); 
  9.     echo( "数组型参数:" . url::replace( $url , array('pid'=>10,'page'=>5)) ); 
  10.     //echo( urlReplace( $url , array('pid'=>10,'page'=>5)) ); 
  11. */  
  12. /** 
  13.  * url replace 
  14.  * @param string $url 需要替换的URL字符串,一般为aaa.php?abc=def,也可以带上路径,象http://xxx.com/abc/def.php?aa=bb 
  15.  * @param mixed $options 需要替换的变量,可以是字符串或数组,如果是字符串,格式为"aa=bb,cc=dd",有多个,用","隔开 
  16.  * @return string $url 替换后的URL 
  17.  */  
  18. class url   
  19. {  
  20.     static function replace ( $url , $options)  
  21.     {  
  22.         $options = self::optInit( $options );  
  23.         $Query = parse_url$url , PHP_URL_QUERY );  
  24.         if($Query){  
  25.             parse_str$Query , $GET );  
  26.             if ( $GET ){  
  27.                 //foreach ( $GET as $_k => $_v ){  
  28.                 //  //if( array_key_exists( $_k , $options)){  
  29.                 //      $GET[$_k] = $options[$_k];  
  30.                 //  //}  
  31.                 //}  
  32.                 $GET = array_merge($GET,$options);  
  33.             }  
  34.             return str_replace$Query , http_build_query( $GET ), $url );            
  35.         }  
  36.         if( !$Query && $options ){  
  37.             return $url . "?" . http_build_query($options);  
  38.         }  
  39.         return $url;  
  40.     }  
  41.   
  42.     static private function optInit ( $options )  
  43.     {  
  44.         ifis_string$options )){  
  45.             $optlists = Power::Normalize( $options );  
  46.             foreach$optlists as $val){  
  47.                 list($tmpKey,$tmpVal) = Power::Normalize( $val , "=");  
  48.                 $opts[$tmpKey] = $tmpVal;  
  49.             }  
  50.         }else{  
  51.             $opts = $options;  
  52.         }  
  53.         //unset( $options );  
  54.         return $opts;  
  55.     }  
  56. }  
......虽然考虑了一些东西,但也仅仅是个很一般的解决方法

 

Tags: parse_str, parse_url