次のことを行うための正規表現を作成しようとしています(preg_replace内)
$str = 'http://www.site.com&ID=1620';
$str = 'http://www.site.com';
文字列から&ID = 1620を削除するpreg_replaceを作成するにはどうすればよいですか(IDは可変の文字列長である可能性があることを考慮に入れて)
前もって感謝します
次のことを行うための正規表現を作成しようとしています(preg_replace内)
$str = 'http://www.site.com&ID=1620';
$str = 'http://www.site.com';
文字列から&ID = 1620を削除するpreg_replaceを作成するにはどうすればよいですか(IDは可変の文字列長である可能性があることを考慮に入れて)
前もって感謝します
属性&
の文字としては許可されていないと思います。ID
その場合は、
$result = preg_replace('/&ID=[^&]+/', '', $subject);
または(PaulP.ROのおかげでおそらくもっと良い):
$result = preg_replace('/[?&]ID=[^&]+/', '', $subject);
これ により、文字列の次または最後まで続く文字数に加えて &ID=
(2番目のバージョンでも削除されます)削除されます。このアプローチにより、次の属性がすべてそのままになります。?ID=
&
$str = 'http://www.site.com?spam=eggs&ID=1620&foo=bar';
に変更されます
$str = 'http://www.site.com?spam=eggs&foo=bar';
あなたが使うことができます...
$str = preg_replace('/[?&;]ID=\d+/', '', $str);
これは通常のURLであると想定しているため、[?&;]
。その場合は、である&
必要があり?
ます。
GETパラメータのより大きなリストの一部である場合は、おそらく...を使用する方がよいでしょう。
parse_str($str, $params);
unset($params['ID']);
$str = http_build_query($params);
次の形式を使用できます
(つまり、URLが次の形式の場合)。parse_url
http://something.com?id1=1&id2=2
$url = parse_url($str);
echo "http://{$url['host]}";