我有包含要删除的跟踪字符串的字符串。正则表达式似乎是最好的解决方案,但我想不出一个可行的正则表达式。
示例网址:
- http://example.com?tracking=foo
- http://example.com/bar.html?tracking=foo
- http://example.com?tracking=foo¶m=baz
- http://example.com/bar.php?param=baz&tracking=foo
tracking=foo
应该删除foo
几乎任何东西,除了&
,不应该触摸没有跟踪的 URL。
我得到的最好的镜头是/(http:\/\/[^?]*?.*)tracking=[^&]*&?(.*?["|\'])/i
,但它与 -part 匹配太多,[^&]*
因此如果跟踪字符串之后的 URL 上没有第二个参数,则消除链接后面的所有内容。
我现在正在使用它,它$html
包含要输出的页面的整个 html,我想从其中的所有 url 中删除跟踪:
$html = preg_replace($pattern, '$1$2', $html);
所以 $html 包含的最小值是这样的:
<body>
<a href="[one of the examples above]">Some Link</a>
</body>