%22 (двойные кавычки) добавлено в url из ниоткуда


Я делаю почтовую программу, которая будет использоваться для рассылки информационных бюллетеней клиентам, в информационных бюллетенях будут изображения и ссылки. Когда я тестировал его на localhost, все работало нормально, и ссылки работали. Однако, когда я загрузил его на свой сайт, ссылки и пути к изображениям больше не будут работать.

По какой-то причине он добавляет %22 (которые, как я выяснил, являются двойными кавычками ") к ссылкам и путям, поэтому ссылка, которую я отправил, выглядит следующим образом:

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

И путь изображения выглядит так: это:

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

Я использую TinyMCE для редактирования бюллетеня, и я пробовал relative_urls : false и convert_urls : false, но это ничего не дает. Я не думаю, что это проблема TinyMCE, но я думал, что упомяну об этом в любом случае. Я понятия не имею, что вызывает это, так что если кто-то знает, что это происходит, это было бы здорово!

Обновление: Я проверил свой код и посмотрел на html текста, отправляемого по почте, и нет никаких двойных кавычек вокруг ссылки в любое время, поэтому я предполагаю, что это сервер вопрос.

2 3

2 ответа:

Это проблема с magic_quotes Проверьте phpinfo (), чтобы увидеть, если он выключен. Если вы можете отключить его, вы должны отключить его в вашем php.ини.

Вы можете проверить, включена ли она или отключена с помощью следующего кода:

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

Еще исправить, можно использовать stripslashes(), чтобы удалить слеши. Это, скорее всего, решит проблему.

Прочитайте документы о stripslashes() здесь

Краткий пример:

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

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

Edit: еще одна вещь, которую вы можете попробовать, - это использовать 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() в URL-адресах https://stackoverflow.com/a/10001006/1379394

Если у вас нет доступа к вашему php.ini файл, самый простой способ может быть добавление этого в ваш .htaccess файл:

Php_flag magic_quotes_gpc Off