0

PHP 4この場合、URLから特定の変数を取り除く方法 "?lang = en"

/filename.php?lang=en

4

4 に答える 4

4
$url = '/filename.php?lang=en&test=1';                    // the main link
$str = parse_url($url);                                   // parse_url
parse_str($str['query'], $arr);                           // parse_str on 'query'
unset($arr['lang']);                                      // unset 'lang'
$newQuery = http_build_query($arr);                       // rebuild query
$link = substr($url, 0, strpos($url, '?')).'?'.$newQuery; // remake link

echo $link; // /filename.php?test=1

これは簡単に関数にまとめることができます:

function removeParameter($link, $remove){
    $str = parse_url($link);                                    // parse_url on $link
    parse_str($str['query'], $arr);                             // parse_str on 'query'
    unset($arr[$remove]);                                       // unset $remove
    $newQuery = http_build_query($arr);                         // rebuild query
    $link = substr($link, 0, strpos($link, '?')).'?'.$newQuery; // remake link
    return $link;
}

echo removeParameter('/filename.php?lang=en&test=1', 'lang'); // /filename.php?test=1
echo removeParameter('http://www.example.com/filename.php?lang=en&test=1&me=do', 'test'); // http://www.example.com/filename.php?lang=en&me=do
于 2012-10-04T11:02:34.123 に答える
0

あなたはスーパーグローバル$_GETを探しています:

echo $_GET['lang']; // will put 'en' on the screen
于 2012-10-04T10:54:33.727 に答える
0

substr()strrpos( ) を使用します。

$str = 'filename.php?lang=en';
$str = substr($str, 0, strrpos($str, '?'));
echo $str; // Outputs 'filename.php'
于 2012-10-04T10:55:25.620 に答える
0

正規表現を使用してpreg_match('/^([^?]+)/', '/filename.php?lang=en')、疑問符まですべてを一致させることができます。

于 2012-10-04T10:56:15.513 に答える