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