检测特定网址并添加跟踪参数PHP

时间:2017-01-23 17:46:42

标签: php regex parameters preg-replace

我有一个问题,这似乎很简单,但是谁给我带来了一些问题。

我有一个文本字符串,可以包含多个html标签,段落和链接(文本链接和/或HTML链接)。我想解析内容,检测具有特定URL的链接,并且仅在这种情况下,在网址中应用跟踪参数。

示例:我想仅在以google.com开头的网址上添加参数。

$string = 'This is the content... <a href="yahoo.com">Yahoo</a> - <a href="google.com">This one will be surcharged with ?tk=test</a> and direct links too : google.com";

我该怎么做?我尝试使用正则表达式,但它不起作用。我试过preg_replace,但是URL可以有多种形式(http或不是,不同的tld等)。

谢谢!!!

1 个答案:

答案 0 :(得分:2)

我会将preg_replace/href="([^"?]*google\.com[^"]*)"/一起用作模式。 ("在下面的php中转义)

$string = 'This is the content... <a href="yahoo.com">Yahoo</a> - <a href="google.com">This one will be surcharged with ?tk=test</a>';

$output = preg_replace("/href=\"([^\"?]*google\.com[^\"]*)\"/", "href=\"$1?tk=test\"", $string);

echo $output;

返回:

This is the content... <a href="yahoo.com">Yahoo</a> - <a href="google.com?tk=test">This one will be surcharged with ?tk=test</a>

这会将?tk=test附加到包含"google.com"的任何href的末尾 https://regex101.com/r/7eoohe/3

**更新了正则表达式,使其与https://search.yahoo.com/?p=google.com

等网址不匹配