【发布时间】:2011-08-06 08:22:34
【问题描述】:
我创建了自己的时事通讯模块,但遇到了一个(大)问题。 系统使用附加参数格式化所有网址,以跟踪谷歌分析中的点击。
例如 像这样的网址
变成这样
http://www.domain.com/&utm_source=newsletter&utm_medium=e-mail&utm_campaign=test
还有这样的网址
变成这样
http://www.domain.com/?page=1&utm_source=newsletter&utm_medium=e-mail&utm_campaign=test
第一个例子是假的。我知道第一个&符号必须用&符号替换,这就是问题发生的地方。 我正在使用这种模式来提取 url 的
$pattern = array('#[a-zA-Z]+://([-]*[.]?[a-zA-Z0-9_/-?&%\{\}])*#');
$replace = array('\\0&utm_source=newsletter&utm_medium=e-mail&utm_campaign=test');
$body = preg_replace($pattern,$replace,$body);
谁能帮助我正确且有效的正则表达式,所以第一个 url 参数总是包含一个问号而不是一个&符号?
【问题讨论】:
-
你为什么不想使用
strpos+ 连接? -
如果一个答案解决了您的问题,您应该通过在其下方标记绿色 V 来接受它作为一个好的答案。