Разрешить символ " & " в ссылках mailto href

Разрешить символ " & " в ссылках mailto href

09.03.2018 04:47:50 Просмотров 96 Источник

У меня есть ссылка на электронную почту mailtohref, и когда я использую символ &в теме, это предотвращает любую визуализацию кода после этого амперсанда в строке темы электронной почты. т. е. Oil & Gas, просто показывает, как Oil.

При нормальных условиях я бы просто изменил &на слово and, но строка темы динамически генерируется с помощью заголовков сообщений в Wordpress.

Кто-нибудь знает, как я могу предотвратить разрыв строки темы или, другими словами, как я могу заставить &отображаться как текстовый символ?

Урезанная версия кода приведена ниже:

<a href="mailto:joe@example.com?subject=Oil&Gas">Apply</a>

Хотя в HTML-коде сайта это вытащил в использовании:

<a href="mailto:<?php echo $author_email;?>?subject=<?php the_title(); ?>">Apply</a>

Любая помощь или идеи были бы сказочными, и я не уверен,будет ли это решение html, php или Javascript?

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links#comment85376469_49185405
URLEncode на стороне PHP.
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links#comment85376501_49185405
Я отозвал свой дубликат голоса, поскольку другой пост не имеет ссылки на PHP.
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links#comment85376576_49185405
никто больше не использует ссылки mailto, спам-боты собирают адреса таким образом. создайте форму и отправьте ее по почте

Ответы - Разрешить символ " &amp; " в ссылках mailto href / Allow '&' Character in mailto href links

Tobiq

09.03.2018 04:51:34

Вы можете экранировать строку, чтобы ее можно было безопасно использовать, используя функцию urlencode, например:

<a href="mailto:<?php echo $author_email;?>?subject=<?php echo urlencode(the_title()); ?>">Apply</a>

urlencode PHP DOC

ishegg

09.03.2018 04:51:56

Вам нужно urlencode()заголовок.

<?php
$title = "Gas&Oil";
?>
<a href="mailto:a@mail.com?subject=<?= urlencode($title); ?>">Apply</a>

Демонстрация

Кроме того , поскольку the_title()по умолчанию повторяет заголовок, Вам нужно использовать get_the_title(), иначе urlencode()не будет иметь никакого эффекта. Вы можете увидеть эту модель здесь:

<?php
function the_title() {
    echo "Gas & Oil";
}
function get_the_title() {
    return "Gas & Oil";
}
?>
<a href="mailto:a@mail.com?subject=<?=urlencode(the_title()); ?>">Apply</a><br> <!-- doesn't work -->
<a href="mailto:a@mail.com?subject=<?=urlencode(get_the_title()); ?>">Apply</a> <!-- works -->

Демонстрация

Однако это будет кодировать весь заголовок, изменяя другие символы, которые вам не обязательно нужно кодировать. Поэтому, чтобы избежать этого, замените только &для %26:

<a href="mailto:a@mail.com?subject=<?=str_replace("&", "%26", the_title()); ?>">Apply</a><br> <!-- doesn't work -->
<a href="mailto:a@mail.com?subject=<?=str_replace("&", "%26", get_the_title()); ?>">Apply</a> <!-- works -->
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85397549_49185436
Делая это таким образом, просто добавляет множество нежелательных строковых символов в строке темы. В теме письма для 'нефть и газ Арбитражного партнера' гласит: масло+&#038;+газ+арбитраж+партнер
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85397646_49185436
Затем просто замените &для %26, чтобы сохранить ваши другие символы. См. В разделе редактирование.
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85398037_49185436
Это почти работает, я получаю только случайный #038; в теме сейчас? Он читает-Oil & # 038; Gas Arbitration Partner-как я удалю это #038; я очень ценю вашу помощь до сих пор.
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85398456_49185436
Хм, похоже, это связано с вашим почтовым клиентом. Что вы используете?
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85398657_49185436
Я использую Thunderbird
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85398717_49185436
Можете ли вы показать мне вывод var_dump(the_title()); var_dump(str_replace("&", "%26", get_the_title()));пожалуйста
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85398901_49185436
Вот что было выведено на страницу: Oil & Gas Arbitration PartnerNULL string(36) "Oil &Gas Arbitration Partner"
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85399076_49185436
Извините, для первого используйте var_dump(get_the_title());а также
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85399587_49185436
Похоже, он возвращает то же самое: нефть и газ Арбитражного PartnerNULL строка(36) "нефтяная %26#038; Арбитражный газового партнера "
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85399723_49185436
Похожеget_the_title()выполняет некоторую кодировку самостоятельно. Попробуйте это: str_replace("&", "%26", html_entity_decode(get_the_title()));
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85399914_49185436
Нет, это возвращает пустую строку темы.
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185436#comment85400085_49185436
Правда? Вы использовали html_entity_decode()и теперь он пуст? Это должно выглядеть так: <a href="mailto:a@mail.com?subject=<?=str_replace("&", "%26", html_entity_decode(get_the_title())); ?>">Apply</a>
FoulFoot

09.03.2018 04:54:29

Попробуйте заменить амперсанд на "%26" или "&" :

<a href="mailto:<?php echo $author_email;?>?subject=<?php str_replace('&', '%26', the_title()); ?>">Apply</a>
https://stackoverflow.com/questions/49185405/allow-character-in-mailto-href-links/49185455#comment85415256_49185455
<a href="mailto:<?php echo $author_email;?>?subject=<?php str_replace('&', '&amp;', get_the_title()); ?>">Apply</a>
Intacto

20.11.2019 07:54:23

<a href="mailto:<?php echo $author_email;?>?subject=<?php echo str_replace('&amp;','%26',rawurlencode(htmlspecialchars_decode(the_title()))); ?>">Apply</a>

Используйте комбинацию PHP: str_replace('&amp;','%26',rawurlencode(htmlspecialchars_decode(the_title())));

Закрыть X