1

我目前正在尝试使用parse_url. 我的目标是每次在链接中包含以下字符&p(按该顺序)时解析链接。在决定是否解析链接之前if statement,是否可以检查这些字符。url例如,如果链接具有字符&p(按该顺序),那么它将解析链接并格式化为我想要的选择。我已经能够计算出解析部分,但我将如何检查这些字符&p(按该顺序)?如果您看到下面的示例,我只想&从链接中删除。

if($url == '&p' ) // not sure how to check
{
$parsed_url = parse_url($url);
$fragment = $parsed_url['fragment'];
$fragment_parts = explode('/', $fragment);
$formatted_url = array_pop('http://www.website.com?p=$1',$url);
}
else    
{   
// do something else
}

例子:

输入:http://www.website.com?&p=107

输出:'http://www.website.com?p=107

4

2 回答 2

2

您可以使用str_replace 函数将此&p字符串替换为p.

$url = "http://www.website.com?&p=107";
$url = str_replace("&p", "p", $url);
echo $url; // will print http://www.website.com?p=107

在这里测试

对于更复杂的文本处理,您可以使用preg_replace().

于 2013-01-27T01:51:21.593 回答
1

如果您只需要检查 url 是否有 ?&p 只需使用strpos

<?php
if(strpos($url, '?&p') !== false) {
//your magic
}
?>

否则,如果您尝试处理错误的请求,您可以执行以下操作:

<?php
$url = $_SERVER['REQUEST_URI']; // will have the /?&p=123
if(strpos($url, '?&p') !== false) {
    $url = str_replace("&p", "p", $url); // now you've only got ?p=123
    //then do what ever you like 
    //redirect to the appropriate URL or you can set the $_GET['p'] e.g.
    header("Location: /".$url);
    //or
    $parsed = parse_str($url, $get);
    $_GET['p'] = $get['?p'];
}
?>
于 2013-01-27T02:26:16.017 回答