削除したいトラッキング文字列を含む文字列があります。正規表現は最良の解決策だったようですが、正常に動作する正規表現を見つけることができません。HTMLのURLからトラッキングパラメータをフィルタリングする正規表現
例の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
が除いてほとんど何もすることができます、トラッキングのないURLには触れないでください。
ベストショットは/(http:\/\/[^?]*?.*)tracking=[^&]*&?(.*?["|\'])/i
ですが、トラッキング文字列の後ろにURLに2番目のパラメータがない場合は、リンクの背後にあるすべてのものを排除して[^&]*
-partとあまりにも一致します。
、私はこのようにそれを使用していた瞬間に$html
が出力されるように、ページの全体のHTMLが含まれており、私は内のすべてのURLから追跡を削除する:
$html = preg_replace($pattern, '$1$2', $html);
ので、最低$あなたがparse_url
とparse_str
を使用して、URLを解析することにより、これを行う必要があります
<body>
<a href="[one of the examples above]">Some Link</a>
</body>
から2番目のグループを削除すると一致した場合、あなたはから一部を削除しようとしています文字列の始まりを追跡文字列の末尾に、または単に文字列を追跡することにしますか? – Gabber
@Gabberトラッキングパラメータを削除したいとします。たとえば、http://example.com?tracking = foo&param = bazはhttp://example.com?param = bazになります。 – bardiir