【问题标题】:%22 (double quotes) added to url out of nowhere%22(双引号)突然添加到 url
【发布时间】:2013-06-19 09:28:24
【问题描述】:

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

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

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

而且图片路径是这样的:

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

我正在使用 TinyMCE 编辑时事通讯,我尝试过 relative_urls : falseconvert_urls : false 但这无济于事。我不认为这是一个 TinyMCE 问题,但我想我还是会提到它。

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

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

【问题讨论】:

  • 你是如何建立你的网址的?看起来您将它们视为字符串(%22 封装了您的网址)
  • @SamueleMattiuzzo 我只是在 TinyMCE 中添加带有选项的链接,但是当我查看时事通讯的 html 时,它是一个简单的 <a href="http://www.mywebsite.com">mywebsite</a>

标签: php url tinymce


【解决方案1】:

这是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
?>

信息HERE

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

【讨论】:

  • 你怎么知道他在用php? (不想当混蛋,你的答案是正确的,只是好奇你是怎么猜出来的……)
  • 因为他加了php标签。
  • 没问题。有时也会发生在我身上。
  • @KeesSonnema 我测试了魔术引号,它们被禁用了。我知道 stripslashes 可以与其他 prgramms 一起使用,但如果我在整个时事通讯中使用 stripslashes,我就不能再在任何地方输入任何双引号,所以这不是一个真正的选择。
  • 魔术引号不会加双引号吧?
【解决方案2】:

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

php_flag magic_quotes_gpc 关闭

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    相关资源
    最近更新 更多