正则表达式从字符串中删除ID = 1234(PHP)

时间:2012-04-05 12:48:08

标签: php regex preg-replace

我正在尝试创建一个正则表达式来执行以下操作(在preg_replace中)

$str = 'http://www.site.com&ID=1620';

$str = 'http://www.site.com';

我如何编写一个preg_replace来简单地从字符串中删除& ID = 1620(考虑到ID可能是变量字符串长度

提前致谢

3 个答案:

答案 0 :(得分:3)

我猜测&属性中不允许ID作为字符。在这种情况下,您可以使用

$result = preg_replace('/&ID=[^&]+/', '', $subject);

或(可能更好,感谢PaulP.R.O。):

$result = preg_replace('/[?&]ID=[^&]+/', '', $subject);

这将删除&ID=(第二个版本也会移除?ID=)以及后续任意数量的字符,直到下一个&或字符串结尾。这种方法可以确保任何以下属性都不会受到影响:

$str = 'http://www.site.com?spam=eggs&ID=1620&foo=bar';

将更改为

$str = 'http://www.site.com?spam=eggs&foo=bar';

答案 1 :(得分:3)

你可以使用......

$str = preg_replace('/[?&;]ID=\d+/', '', $str);

我假设这是一个普通的URL,因此是[?&;]。如果是这种情况,则&应为?

如果它是更大的GET参数列表的一部分,那么最好使用...

parse_str($str, $params);

unset($params['ID']);

$str = http_build_query($params);

答案 2 :(得分:3)

您可以使用parse_url
如果 ,网址格式为:http://something.com?id1=1&id2=2):

$url = parse_url($str);

echo "http://{$url['host]}";