<?php
 header("Content-Type:text/html;charset=UTF-8");
$a="index.php?a=1&b=2";
$b="index.php?a=1&b=2&c=3";
echo str_replace("&","_",$a)."<br>";
echo str_replace("&","_",$b);
?> 

解决方案 »

  1.   

    单纯正则是不行的,随便写个函数吧,希望有帮助<?php

    function urlTrans( $str , $suffix )
    {
    $pathInfo = pathinfo( $str );
    $basename = $pathInfo['filename'];
    $param = explode( "?" , $str );
    $queryString = preg_replace( "/[\=\&]/" , "_" , $param[1] );
    return $basename."_".$queryString.".".$suffix; 
    }

    $str = "index.php?a=1&b=2";
    $str1 = urlTrans( $str , "html" );
    echo $str1;
    ?>逆过程麻烦一点,因为"_"要智能的转换成"="或"&",不过也不是完全不能写,自己想一下吧。如果需求不是很严格的话,为什么不能变成index_a_1#b_2.html之类的呢,这样逆过程实现起来就方便多了。最后,如果是地址映射的话,用mod_rewrite吧,方便许多~~~