Preg_match从XML中的所有URL中删除跟踪代码

时间:2012-07-18 23:39:01

标签: php regex preg-replace

我想从XML文件中提取所有网址,排除网址中的跟踪代码:

以下是网址的示例,它们都采用相同的格式

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

因此,域之间唯一的变化是XXXXXX,这是一个数值

我想要的最终结果是

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

我曾尝试在下面的代码中使用preg_replace,但它最终用随机(我认为)数字替换整个网址

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

1 个答案:

答案 0 :(得分:1)

将XML中的网址与preg_match()匹配:

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

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

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