2

getとpostのすべてをサニタイズする関数はほとんどありませんが、これはもう少し具体的である必要があります。次のようなリンクを生成する配列があります。

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

getとpostをサニタイズする関数もありますが、その関数はこの配列値からすべてをクリアするので、私は残ります

httpsitesomethinganotherget_something1

誰かが後にすべてを一致さget_something= せてクリアするか、get_something =1に置き換えるのを手伝ってくれませんか?

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

2 に答える 2

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);

出力する必要があります(デモ[更新]):

Array
(
    [0] => http://site/something/another/
    [1] => http://site/something/another2/
    [2] => http://site/something/another/
    [3] => http://site/something/another/?foo=bar
)
于 2012-04-28T02:29:01.777 に答える
0

URLを解析しようとしている場合、最善の策は、を使用し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
}
于 2012-04-28T01:37:53.167 に答える