3

preg_expression を使用して、URL から特定のパターンのパラメーターをすべて削除したいと考えていました。また、最後の「&」が存在する場合は削除します。パターンは次のようになります: make=xy (「make」は固定です。「xy」は任意の 2 文字です)

例:

http://example.com/index.php?c=y&make=yu&do=ms&r=k&p=7&

を処理した後preg_replace、結果は次のようになります。

http://example.com/index.php?c=y&do=ms&r=k&p=7

私は使用してみました:

$url = "index.php?ok=no&make=ae&make=as&something=no&make=gr";
$url = preg_replace('/(&?lang=..&?)/i', '', $url);

ただし、URL に make=xx の重複があるため、これはうまく機能しませんでした (これは私のアプリで発生する可能性があるケースです)。

4

5 に答える 5

7

これには正規表現は必要ありません:

$url = "http://example.com/index.php?ok=no&make=ae&make=as&something=no&make=gr&";

list($file, $parameters) = explode('?', $url);
parse_str($parameters, $output);
unset($output['make']); // remove the make parameter

$result = $file . '?' . http_build_query($output); // Rebuild the url
echo $result; // http://example.com/index.php?ok=no&something=no
于 2013-04-03T09:25:58.703 に答える
2

あなたは使用してみることができます:

$str = parse_url($url, PHP_URL_QUERY);
$query = array();
parse_str($str, $query);
var_dump($query);

これにより、クエリが配列として返されます。次に、http_build_query() 関数を使用して、クエリ文字列の配列を復元できます。

しかし、正規表現を使用したい場合:

$url = "index.php?make=ae&ok=no&make=ae&make=as&something=no&make=gr";
echo $url."\n";
$url = preg_replace('/\b([&|&]{0,1}make=[^&]*)\b/i','',$url);
$url = str_replace('?&','?',$url);
echo $url;

これにより、URL のすべての make が削除されます

于 2013-04-03T09:24:51.840 に答える
0

最後にrtrim削除できます&

$url = rtrim("http://example.com/index.php?c=y&make=yu&do=ms&r=k&p=7&","&");
$url = preg_replace('~&make=([a-z\-]*)~si', '', $url);
于 2013-04-03T09:13:01.680 に答える
0
$url = "index.php?ok=no&make=ae&make=as&something=no&make=gr";
$url = preg_replace('/(&?make=[a-z]{2})/i', '', $url);
echo $url;
于 2013-04-03T09:13:31.120 に答える