6

我正在制作一个邮件程序,用于将新闻通讯邮寄给客户,新闻通讯中将包含图像和链接。当我在 localhost 上对其进行测试时,一切正常并且链接正常。但是,当我将其上传到我的网站时,链接和图像路径将不再起作用。

出于某种原因,它在链接和路径中添加了 %22 (我发现它是双引号“),所以我邮寄的链接如下所示:

/%22http//www.mywebsite.com/%22

图像路径如下所示:

%22http//www.mywebsite.com/content/someimage.jpg/%22

我正在使用 TinyMCE 编辑时事通讯,我已经尝试过relative_urls : falseconvert_urls : false但没有任何效果。我不认为这是一个 TinyMCE 问题,但我想我还是会提到它。

我不知道是什么原因造成的,所以如果有人知道发生了什么,那就太好了!

更新:我检查了我的代码并查看了在邮件中发送的文本的 html,并且在任何时候链接周围都没有双引号,所以我的猜测是这是一个服务器问题。

4

2 回答 2

6

这是magic_quotes检查您的 phpinfo() 以查看它是否已关闭的问题。如果你能够关闭它 你必须在你的 php.ini 中禁用它。

您可以使用以下代码测试它是启用还是禁用:

<?php
echo "Magic quotes is ";
if (get_magic_quotes_gpc()) {
  echo "enabled.";
} else {
  echo "disabled";
}
?>

另一个修复方法是stripslashes()用来删除斜线。这很可能会解决问题。

阅读关于stripslashes() HERE的文档

一个简单的例子:

<?php
$str = "Is your name O\'reilly?";

// Outputs: Is your name O'reilly?
echo stripslashes($str);
?>

编辑:您可以尝试的另一件事是使用html_entity_encode().

一个例子:

<?php
$orig = "I'll \"walk\" the <b>dog</b> now";

$a = htmlentities($orig);

$b = html_entity_decode($a);

echo $a; // I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo $b; // I'll "walk" the <b>dog</b> now
?>

信息在这里

另一个答案。对于html_entity_encode()网址 https://stackoverflow.com/a/10001006/1379394

于 2013-06-19T09:46:42.840 回答
1

如果您无权访问您的 php.ini 文件,最简单的方法是将其添加到您的 .htaccess 文件中:

php_flag magic_quotes_gpc 关闭

于 2016-12-03T06:54:25.750 回答