Разрешить символ " & " в ссылках mailto href
У меня есть ссылка на электронную почту mailto
href, и когда я использую символ &
в теме, это предотвращает любую визуализацию кода после этого амперсанда в строке темы электронной почты. т. е. 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?





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

09.03.2018 04:51:34
Вы можете экранировать строку, чтобы ее можно было безопасно использовать, используя функцию urlencode
, например:
<a href="mailto:<?php echo $author_email;?>?subject=<?php echo urlencode(the_title()); ?>">Apply</a>

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 -->


&
для %26
, чтобы сохранить ваши другие символы. См. В разделе редактирование.




var_dump(the_title()); var_dump(str_replace("&", "%26", get_the_title()));
пожалуйста


var_dump(get_the_title());
а также


get_the_title()
выполняет некоторую кодировку самостоятельно. Попробуйте это: str_replace("&", "%26", html_entity_decode(get_the_title()));


html_entity_decode()
и теперь он пуст? Это должно выглядеть так: <a href="mailto:a@mail.com?subject=<?=str_replace("&", "%26", html_entity_decode(get_the_title())); ?>">Apply</a>


<a href="mailto:<?php echo $author_email;?>?subject=<?php str_replace('&', '&', get_the_title()); ?>">Apply</a>