Preg匹配以从所有URL中删除跟踪代码';s


Preg match to remove tracking code from all URL's in XML

我想从XML文件中提取所有url,不包括url中的跟踪代码:

下面是一个URL的例子,它们都遵循相同的格式

http://www.domain.com.au/category/pXXXXXX?uni_id=XXXXXX&cid=1_demo_1

所以域之间唯一变化的是XXXXXX,它是一个数值

我想要的最终结果是

http://www.domain.com.au/category/pXXXXXX

我试着在下面的代码中使用preg_replace,但它最终用一个随机(我认为)数字替换了整个URL

$data = preg_replace('/http':'/'/www'.domain'.com.au'/[^'?]+([^.]+)/','',$data);

preg_match():匹配XML中的URL

preg_match("(http://[^'s]+|ftp://[^'s]+)", $input, $matches);

然后,您应该使用preg_replace(),并且应该只匹配字符串中需要删除的部分:

foreach($matches as $value)
{
    preg_replace("('?[^'s]+)","",$value);
}