2012-04-28 3 views
2

私がGETとPOSTのすべてを消毒するいくつかの機能を持っていますが、この1つは、もう少し具体的にする必要があり、私が取得し、ポスト消毒それれる機能を持っても文字列PHPの特定の文字の後にすべてをクリアするには?

array(
    1 => http://site/something/another/?get_something=1 
    2 => http://site/something/another2/?get_something=1 
) 

のようなリンクを生成している配列を持っています私は残っていますので、関数は、この配列の値からすべてをクリアします

httpsitesomethinganotherget_something1

誰かがget_something= 後EVERYTHINGと一致し、それをクリアするか、get_something = 1でそれを置き換えるために助けてくださいすることができますので、あなたはURLを解析しようとしている場合

$clear = preg_match('/^[A-Za-z0-9]+$/', $array[1]); 
preg_replace("/get_something=".$clear."/i","",$array[1]); 
+0

したがって、 '='の後にあるものはすべて削除するか、置き換えますか? – Sampson

+0

@Jonahtan Samplson after get_something = – Benn

+4

parse_url()でurlを解析し、 "query"配列値をサニタイズする方法はありますか? –

答えて

1

あなたはparse_urlを使用する必要がありますが、ここで、あなたは興味が場合には、正規表現の実装である:ここで私はそれを行うだろう方法です

$urls = array 
(
    'http://site/something/another/?get_something=1', 
    'http://site/something/another2/?get_something=1', 
    'http://site/something/another/?get_something=1&foo=bar', 
    'http://site/something/another/?foo=bar&get_something=1', 
); 

$urls = preg_replace('~[?&]get_something=.*$~i', '', $urls); 

print_r($urls); 

万一出力(demo [updated]):

Array 
(
    [0] => http://site/something/another/ 
    [1] => http://site/something/another2/ 
    [2] => http://site/something/another/ 
    [3] => http://site/something/another/?foo=bar 
) 
+0

これも全てを消去します。/get_something=(.*)/ – Benn

+0

@Benn:ああ、私はあなたが 'get_something'引数*に関して全てを削除したいという印象を受けました。すべてを削除するには、さらに簡単です。編集を確認してください。 –

+0

ありがとうございます! – Benn

0

ようmething、あなたの最善の策は、parse_urlを使用したくないクエリ要素を切り落とす、とhttp_build_urlを再構築することです。

for($i = 0; $i < count($linkArray); $i++) { 
    // get original link and parse it 
    $link = parse_url($linkArray[$i]); 

    // replace the query portion 
    $link["query"] = "get_something=1"; 

    // build the new URL 
    $linkArray[$i] = $link["scheme"] . "://" . $link["hostname"] . $link["path"] . "?" . $link["query"] . "#" . $link["fragment"] 

    // done 
} 
+0

PECLを使用できません – Benn

+0

@Benn PECLを必要とする 'http_build_url'呼び出しを削除しました。このバージョンは堅牢ではありませんが、あなたのニーズに合っているはずです。 –

関連する問題