1

現在、URL リンクを でフォーマットしようとしています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 に答える