0

我正在创建一个电子邮件模板。基本上,几乎所有工作都运行良好。我将链接列表发送给用户。问题是有时,链接会在 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,'&lt; /td&gt;','');

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&amp;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;

}

再次感谢

4

0 回答 0