我收到了包含要刪除的跟蹤字符串的字符串。正則表達式似乎是最好的解決方案,但我無法想出一個能夠正常工作的正則表達式。正則表達式來過濾來自HTML中URL的跟蹤參數
網址示例:
- 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
可以是除相當多的東西,無法跟蹤沒有跟蹤的網址。
我工作的最佳鏡頭是/(http:\/\/[^?]*?.*)tracking=[^&]*&?(.*?["|\'])/i
,但它與[^&]*
-匹配得太多,因此如果跟蹤字符串後沒有第二個參數,則會消除鏈接後面的所有內容。
而且我使用像這樣的時刻$html
包含整個HTML的頁面輸出以及我想從所有URL中移除跟蹤:
$html = preg_replace($pattern, '$1$2', $html);
所以最低的$ HTML將包含將是這樣的:
<body>
<a href="[one of the examples above]">Some Link</a>
</body>
你們是不是要取出部分從字符串(帶有跟蹤)刪除第二組字符串開始到跟蹤字符串的結尾還是跟蹤字符串? – Gabber 2012-04-24 12:07:00
@Gabber我想刪除跟蹤參數 - 例如'http://example.com?tracking = foo&param = baz'應該成爲'http://example.com?param = baz' – bardiir 2012-04-24 12:08:58