我正在使用Zend_Mail和Send Grid从我的网站发送电子邮件.我在电子邮件中有超链接,当它到达用户的收件箱时被覆盖了看似垃圾的东西.
例如,
href ="http://www.foo.com"正在变成href ="http://email.foo.com/wf/click?upn=DSDRHSSBH2938TS".
当我从href中删除'http://'时,我没有这个问题.但是,这对我来说不是一个解决方案,因为没有'http://'的链接在某些电子邮件客户端中不起作用.
我检查了Zend Mail内容,链接似乎没问题,所以我想知道这是发送网格还是电子邮件客户端的问题.我已经浏览了整个网络,并且发现了很少的信息.我见过一些有类似问题的人,但没有人能够提供真正的解决方案.
有没有人见过这样的东西?如果需要,我很乐意提供更多信息.
我正在尝试使用 PHP 函数“preg_match_all”来匹配字符串中的 url。它工作正常,但它不会匹配带有问号的网址。
例如,这将很好地匹配:
http://espn.com/mlb
Run Code Online (Sandbox Code Playgroud)
但这不会匹配:
http://espn.com/mlb?player=71
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的正则表达式,
$regexUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
Run Code Online (Sandbox Code Playgroud)
我不明白为什么问号没有被 \S 选中。我尝试了很多不同的表达方式,但无法让问号匹配。有任何想法吗?
编辑:
事实证明 preg_match_all 返回 true,但我没有转义 preg_match_all 输出中的问号,因此我稍后进行的 preg_replace 调用失败了。