PHP 伪静态下传递参数的几种方法
内容摘要
这篇文章主要为大家详细介绍了PHP 伪静态下传递参数的几种方法,具有一定的参考价值,可以用来参考一下。
以下介绍4种在伪静态下传递参数的方法:伪静态方法一:经测试代码如下:
以下介绍4种在伪静态下传递参数的方法:伪静态方法一:经测试代码如下:
文章正文
这篇文章主要为大家详细介绍了PHP 伪静态下传递参数的几种方法,具有一定的参考价值,可以用来参考一下。
以下介绍4种在伪静态下传递参数的方法:伪静态方法一:经测试代码如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <code class = "php" > <?php // 伪静态方法一 // localhost/php100/test.php?id|1@action|2 $Php2Html_FileUrl = $_SERVER [ "REQUEST_URI" ]; echo $Php2Html_FileUrl . "<br>" ; // /php100/test.php?id|1@action|2 $Php2Html_UrlString = str_replace ( "?" , "" , str_replace ( "/" , "" , strrchr ( strrchr ( $Php2Html_FileUrl , "/" ), "?" ))); echo $Php2Html_UrlString . "<br>" ; // id|1@action|2 $Php2Html_UrlQueryStrList = explode ( "@" , $Php2Html_UrlString ); print_r( $Php2Html_UrlQueryStrList ); // Array ( [0] => id|1 [1] => action|2 ) echo "<br>"; foreach ( $Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr ){ $Php2Html_TmpArray = explode ( "|" , $Php2Html_UrlQueryStr ); print_r( $Php2Html_TmpArray ); // Array ( [0] => id [1] => 1 ) ; Array ( [0] => action [1] => 2 ) echo "<br>" ; $_GET [ $Php2Html_TmpArray [0]] = $Php2Html_TmpArray [1]; } // echo '假静态:$_GET变量<br />'; print_r( $_GET ); // Array ( [id|1@action|2] => [id] => 1 [action] => 2 ) echo "<br>"; echo "<hr>" ; echo $_GET [id] . "<br>" ; // 1 echo $_GET[action]; // 2 ?> /*** 代码来自php教程(www.idcnote.com) ***/ </code> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <code class = "php" > <?php // 伪静态方法二 // localhost/php100/test.php/1/2 $filename = basename ( $_SERVER [ 'SCRIPT_NAME' ]); echo $_SERVER [ 'SCRIPT_NAME' ] . "<br>" ; // /php100/test.php echo $filename . "<br>" ; // test.php if ( strtolower ( $filename ) == 'test.php' ){ if (! empty ( $_GET [id])){ $id = intval ( $_GET [id]); echo $id . "<br>" ; $action = intval ( $_GET [action]); echo $action . "<br>" ; } else { $nav = $_SERVER [ 'REQUEST_URI' ]; echo "1:" . $nav . "<br>" ; // /php100/test.php/1/2 $script = $_SERVER [ 'SCRIPT_NAME' ]; echo "2:" . $script . "<br>" ; // /php100/test.php $nav = ereg_replace ( "^$script" , "" , urldecode( $nav )); echo $nav . "<br>" ; // /1/2 $vars = explode ( "/" , $nav ); print_r( $vars ); // Array ( [0] => [1] => 1 [2] => 2 ) echo "<br>" ; $id = intval ( $vars [1]); $action = intval ( $vars [2]); } echo $id . '&' . $action ; } ?> /*** 代码来自php教程(www.idcnote.com) ***/ </code> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <code class = "php" > <?php // 伪静态方法三 function mod_rewrite(){ global $_GET ; $nav = $_SERVER [ "REQUEST_URI" ]; echo $nav . "<br>" ; $script_name = $_SERVER [ "SCRIPT_NAME" ]; echo $script_name . "<br>" ; $nav = substr ( ereg_replace ( "^$script_name" , "" , urldecode( $nav )), 1); echo $nav . "<br>" ; $nav = preg_replace( "/^.ht(m){1}(l){0,1}$/" , "" , $nav ); //这句是去掉尾部的.html或.htm echo $nav . "<br>" ; $vars = explode ( "/" , $nav ); print_r( $vars ); echo "<br>" ; for ( $i = 0; $i < Count ( $vars ); $i += 2){ $_GET [ "$vars[$i]" ] = $vars [ $i + 1]; } return $_GET ; } mod_rewrite(); $year = $_GET [ "year" ]; //结果为'2006' echo $year . "<br>" ; $action = $_GET [ "action" ]; //结果为'_add' echo $action ; ?> /*** 代码来自php教程(www.idcnote.com) ***/ </code> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <code class = "php" > <?php // 伪静态方法四 // 利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分 if (@ $path_info = $_SERVER [ "PATH_INFO" ]){ // 正则匹配一下参数 if (preg_match( "/\/(\d+),(\d+),(\d+)\.html/si" , $path_info , $arr_path )){ $gid = intval ( $arr_path [1]); //取得值 1 $sid = intval ( $arr_path [2]); //取得值100 $softid = intval ( $arr_path [3]); //取得值8630 } else die ( "Path:Error!" ); // 相当于soft.php?gid=1&sid=100&softid=8630 } else die ( 'Path:Nothing!' ); ?> /*** 代码来自php教程(www.idcnote.com) ***/ </code> |
注:关于PHP 伪静态下传递参数的几种方法的内容就先介绍到这里,更多相关文章的可以留意
代码注释