来自DB的动态html链接被字符串'损坏'?

时间:2012-06-28 11:24:44

标签: php html

我正在创建一个电子邮件模板。 基本上,几乎所有人都运作良好。我发送给用户的链接列表。 问题是,有时,链接将被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;

}

再次感谢

0 个答案:

没有答案