繁体   English   中英

重写URL中的动态子字符串

[英]Rewrite dynamic substring in URL

如标题所示,我的目标是在.htaccess添加一个重写语句,以替换URL中间的动态子字符串。 此外,我需要所有出现的“ |” 更改为“ +”。

例如,我想要这个网址

www.domain.com/?t=p&c=some+string&skus=string1|string2|string3

并将其重定向到:

www.domain.com/?q=string1+string2+string3

基本上,要替换的子字符串以“ t =”开始,以“ skus”结束。

这可能吗? 使用PHP这样做更容易吗?

您可以使用parse_url函数

这可以解决问题

$url = "www.domain.com/?t=p&c=some+string&skus=string1|string2|string3";

echo "<pre>";
print_r($decoded = parse_url($url));
print_r($parsed = queryToArray($decoded['query']));
$parms = explode("|", $parsed['skus']); 
print_r($parms);
echo "</pre>";


function queryToArray($qry)
{
    $result = array();
    //string must contain at least one = and cannot be in first position
    if(strpos($qry,'=')) {

     if(strpos($qry,'?')!==false) {
       $q = parse_url($qry);
       $qry = $q['query'];
      }
    }else {
            return false;
    }

    foreach (explode('&', $qry) as $couple) {
            list ($key, $val) = explode('=', $couple);
            $result[$key] = $val;
    }
    return empty($result) ? false : $result;
}

the result should look like this

    Array
(
    [path] => www.domain.com/
    [query] => t=p&c=some+string&skus=string1|string2|string3
)
Array
(
    [t] => p
    [c] => some+string
    [skus] => string1|string2|string3
)
Array
(
    [0] => string1
    [1] => string2
    [2] => string3
)

尽可能使用PHP内置函数。 因此,在这种情况下,请使用parse_url和parse_str。

$parts = parse_url($url);
parse_str($parts['query'], $query);
$params = explode('|', $query['skus']);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM