繁体   English   中英

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

[英]regular expression to remove ID=1234 from a string (PHP)

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

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

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

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

提前致谢

我猜&不允许作为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';

你可以用...

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

我假设这是一个正常的 URL,因此[?&;] 如果是这样, &应该是一个? .

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

parse_str($str, $params);

unset($params['ID']);

$str = http_build_query($params);

你可以只使用parse_url
(也就是说,如果URL 的形式为: http://something.com?id1=1&id2=2 ):

$url = parse_url($str);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM