используя php для кодирования символов для mailto в javascript? - PullRequest
1 голос
/ 14 сентября 2011

Я использую window.location.href = 'mailto:?body=visit <a href="http://example.com/?content=link" rel="nofollow">http://example.com/?content=link</a>';

, который работает нормально, но способ построения ссылки - window.location.href = 'mailto:?body=<?php echo $content; ?>';

, теперь это работает нормально, если $content не содержит ' или что-то ещепохоже, что нарушает код.

Как я могу сделать эту работу?

Ответы [ 3 ]

4 голосов
/ 14 сентября 2011

Используйте функцию rawurlencode [ php docs ] для кодирования любых символов в вашем входе, которые недопустимы в URL.

<?php $content = "Hello, this' an...\n\nexample!"; ?>
window.location.href = "mailto:?body=<?php echo rawurlencode($content); ?>";
Выход:
window.location.href = "mailto:?body=Hello%2C%20this%27%20an...%0A%0Aexample%21";

Это правда, что вы обычно хотели бы использовать addslashes [ php docs ] , когда вы помещаете что-то в строку в кавычках. В этом случае это не будет иметь никакого эффекта, поскольку в выводе rawurlencode нет символов, которые необходимо экранировать косой чертой.

0 голосов
/ 14 сентября 2011

Использовать rawurlencode () :

window.location.href = 'mailto:?body=<?php echo rawurlencode($content); ?>';
0 голосов
/ 14 сентября 2011

Возможно, вы захотите использовать addlashes , который экранирует кавычки.

...