我应该如何附加到即将作为电子邮件发送的 html 字符串中所有 url 的末尾?我想像这样添加谷歌分析活动跟踪:
?utm_source=email&utm_medium=email&utm_campaign=product_notify
99% 的页面不会以“.html”结尾,并且某些网址可能已经包含以下内容?sr=1
在他们的最后。
更新 @ircmaxell 的答案,即使在之前的 href 和代码简化上存在属性,正则表达式现在也会匹配。
/**
* @param string $body
* @param string $campaign
* @param string $medium
* @return mixed
*/
protected function add_analytics_tracking_to_urls($body, $campaign, $medium = 'email') {
return preg_replace_callback('#(<a.*?href=")([^"]*)("[^>]*?>)#i', function($match) use ($campaign, $medium) {
$url = $match[2];
if (strpos($url, '?') === false) {
$url .= '?';
} else {
$url .= '&';
}
$url .= 'utm_source=' . $medium . '&utm_medium=' . $medium . '&utm_campaign=' . urlencode($campaign);
return $match[1] . $url . $match[3];
}, $body);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)