2016-11-21 16 views
1

URLから特定のパラメータとその値を削除するにはどうすればよいですか?Regex:URLから特定のパラメータと値を削除する

<?php $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?> 

私のURLは私がURLからpage=xを削除する必要があるpagename?page=2またはpagename?param=235235&page=2またはpagename?page=10&param=5431かなど

することができます。

答えて

1

正規表現せずにPHPの組み込みのURL機能を使用して別のアプローチ。もっとエレガントなIMHO

function removeParamFromURL($param, $url) { 
    $parsed_url = parse_url($url); 
    parse_str($parsed_url["query"], $querystringarray); 
    unset($querystringarray[$param]); 
    $parsed_url["query"] = http_build_query($querystringarray); 
    return $parsed_url["scheme"] . "://" . $parsed_url["host"] . $parsed_url["path"] . "?" . $parsed_url["query"]; 
} 
$url = "http://example.com/aaa/bbb/pagename/page.php?param=235235&page=2"; 
print $finalurl = removeParamFromURL("page", $url); 
1

あなたの質問には、page = xxをURLの から削除してください。

午後には正規表現の匂いのようなものはありません。だから私はこれに刺し傷があり、次はそのトリックをするべきです。

私はそれがよりスマートに実行できると確信していますが、それはあなたを動かすことになります。

<?php 
/* 
* My urls can be 
* pagename?page=2 or 
* pagename?param=235235&page=2 or 
* pagename?page=10&param=5431 or etc. 
*/ 
function remove_page_from_url($url){ 
    // For the case where ?page=xx&param 
    if (preg_match('/\?page=[0-9]{0,}&/',$url)){ 
     $url = preg_replace('/&/','?',$url,1); // Only replace the 1st one. 
    } 
    return preg_replace('/[\?|&]page=[0-9]{0,}/','',$url); 
} 

// The Testing during development 

//Case 1: This works 
$url = 'pagename?page=10'; 
echo remove_page_from_url($url); 
echo '<br>'; 

//Case 2: This works 
$url = 'pagename?param=235235&page=2'; 
echo remove_page_from_url($url); 
echo '<br>'; 

//Case 3: This works 
//This messes things up as we also have to change a & to a ? 
$url = 'pagename?page=10&param=5431'; 
echo remove_page_from_url($url); 
echo '<br>'; 

//Case 4: This Works 
//This messes things up as we also have to change a & to a ? but only the first one. 
$url = 'pagename?page=10&param=5431&something=2'; 
echo remove_page_from_url($url); 
echo '<br>'; 

したがって、最も簡単なケースから始めて、あなたの方法を試してみてください。

/* 
The Results 

pagename?page=10 
=> pagename 

pagename?param=235235&page=2 
=> pagename?param=235235 

pagename?page=10&param=5431 
=> pagename?param=5431 

pagename?page=10&param=5431&something=2 
=> pagename?param=5431&something=2 
*/ 

だから、あなたが興味を持っている機能remove_page_from_url($url)内のコードです。

1
Remove dynamic parameters from a URL 

<?php 
function remove_url_parmeter($url,$parameter_key){ 
     if($parameter_key && $url){ 
      foreach($parameter_key as $val){ 
       if (preg_match('/[\?|&]'.$val.'=[0-9]{0,}/',$url)){ 
        $url = preg_replace('/&/','?',$url,1); 
       } 
       $url = preg_replace('/[\?|&]'.$val.'=[0-9]{0,}/','',$url); 
      } 
     }else{ 
      $url = 'This is not work'; 
     } 
    return $url; 

} 

$url = "http://example.com/pagename?page=5&param=5431&page1=10&somepage=3"; 
//$parameter_key =array('page','page1'); 
echo remove_url_parmeter($url,array('page','page1')); 

?> 
関連する問題