我正在创建一个电子邮件模板。 基本上,几乎所有人都运作良好。我发送给用户的链接列表。 问题是,有时,链接将被href属性中特定位置的“”(单个空格)破坏。
例如 - 此链接:
http://www.mydomain.com/index.php?task=quickSearchModule&job_id=40
转向:
http://www.mydomain.com/index.php?task=quic%20kSearchModule&job_id=40
我设法发现这(似乎)与< a>之间的文本有关。和< / a>标签,通过在所有链接中放置一个常量,有问题的链接得到修复......
我试图过滤包含“”和“%20”链接的变量,但它没有帮助 - 它似乎是电子邮件客户端中的糟糕渲染,而不是字符串本身的简单。
我尝试在< a>之间过滤文本本身。坏字符的标签(不是我看到的) - 没有用(尝试过html_entity_decode,奇怪字符的preg_replace等等) - 没什么。
并且使它更奇怪,在浏览器中相同的链接可以工作,但在电子邮件客户端(Gmail和Outlook) - 那就是问题出现...
我的想法已经用完了,真的会很好用,也不会有新的方向......
我的系统是MySQL,PHP,当然还有HTML。
谢谢!
*编辑*
我添加了用于返回每个作业的代码(每个链接都是一个作业)。 我添加了一些过滤器并留下它来显示我尝试的内容......
function getJobLink($job) {
$jobTitle = strip_tags($job['job_title']);
$invalid_characters = array("$", "%", "#", "<", ">", "|", "\\", '"', "'","",'"',"/");
$jobTitle = str_replace($invalid_characters, "", $jobTitle);
$jobTitle = htmlspecialchars_decode($jobTitle);
$jobTitle=strip_tags($jobTitle);
strstr($jobTitle,'/','');
strstr($jobTitle,'< /td>','');
strstr($jobTitle,'< /td>','');
strstr($jobTitle,'"','');
strstr($jobTitle,'\\','');
strstr($jobTitle,"'",'');
$jobTitle = html_entity_decode($jobTitle);
//generate link and try to filter it
$jobLink = 'http://www.mysite.com/index.php?task=quickSearchModule&job_id='.$job['jid'];
$jobLink = str_replace(' ','',$jobLink);
$jobLink = str_replace('%20','',$jobLink);
$jobLink = trim($jobLink);
//create single job HTML link and text
$job = '<tr><td style="border: 1px #cccccc solid">'.$job['field_name'].'</td><td style="border: 1px #cccccc solid">'.$job['area_name'].'</td><td style="border: 1px #cccccc solid;">'.$job['position_name'].' - <a style="" href="'.$jobLink.'" target="_blank">'.trim($jobTitle).'</a></td></tr>';
return $job;
}
再次感谢