Пользовательское поле URL в Joomla - Удалить префикс mailto

в Joomla я использую настраиваемое поле URL (схема MAILTO) для отображения адреса электронной почты. Проблема в том, что Joomla дважды вставляет префикс mailto в код: один раз в атрибут href и еще один между тегами ссылок, например:

<span class = "field-value"><a href = "mailto:[email protected]" rel = "nofollow" target = "_blank">mailto:[email protected]</a></span>

... и это php-код, который управляет его отображением:

defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
    return;
}

$attributes = '';

if (!JUri::isInternal($value))
{
    $attributes = ' rel = "nofollow noopener noreferrer" target = "_blank"';
}

echo sprintf('<a href = "%s"%s>%s</a>',
    htmlspecialchars($value),
    $attributes,
    htmlspecialchars($value)
);

Я хочу удалить префикс mailto между тегами ссылок.

Как действовать? … Возможно, с правилом регулярного выражения? Проблема, я не разработчик ...

Спасибо за помощь,

Лоренцо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
212
2

Ответы 2

Спасибо за ответ, я думаю, вы можете попробовать еще раз.

Я немного плохо говорю по-английски, местами может быть непонятное выражение. введите описание изображения здесь

echo sprintf('<a href = "%s"%s>%s</a>',
preg_replace("/(^(http|https|ftp)://)|(^mailto:)/i","",htmlspecialchars($value)),
$attributes,
htmlspecialchars($value));


// you can test it
$value = "http://www.kinoki.at";
$value = "mailto:[email protected]";
echo "<pre>";
print_r( preg_replace("/(^(http|https|ftp)://)|(^mailto:)/i","",htmlspecialchars($value)));
echo "<pre>";exit;

Спасибо за ваш ответ, но он слишком общий. Код PHP, который я сообщил выше (после вашего ответа), также действителен для отображения других протоколов (http: // https: // ftp: // ...), которые используются для настраиваемых полей URL со следующими схемами http: // https: // ftp: //

iorbita 25.10.2018 12:04

еще раз спасибо за ответ, я сейчас в поездке, попробую завтра вечером, когда вернусь в офис;)

iorbita 25.10.2018 16:50

... протестировал ваш код, но префикс mailto все еще отображается между тегами ссылок: /

iorbita 26.10.2018 23:23

вы можете добавлять схемы в функцию php, которая является preg_replace.

user10492874 27.10.2018 15:45

И снова здравствуйте, я понял, что этот фрагмент кода работает только для схемы http и https (не тестировался для ftp), но не для схемы mailto, странно ... В любом случае префикс mailto должен быть удален не в атрибуте href ( ваш код удаляет схему в атрибуте href), но между тегами [<a>], действительно, в моем случае префикс mailto это просто простой текст ... Скриншот

iorbita 27.10.2018 16:27

Привет и еще раз спасибо за ответ :) Нет проблем с вашим английским, мой не лучше ... но какую часть кода я должен взять? первое или второе решение? В любом случае, я думаю, что решение Яна, возможно, является лучшим решением для подражания, поскольку оно рекомендовано документацией Joomla.

iorbita 30.10.2018 20:27

... и это встроенная функция скрытия электронной почты Joomla. ;)

iorbita 30.10.2018 20:39

Вы, вероятно, столкнетесь с этой проблемой, потому что Joomla пытается скрыть адрес электронной почты. Лучше всего использовать рекомендуемый способ отображения адреса электронной почты, используя встроенные функции маскировки электронной почты.

echo JHtml::_('email.cloak', $value);

См. Также: https://docs.joomla.org/How_to_cloak_email_addresses

Здравствуйте, Ян, и спасибо за ваш ответ, действительно, я думаю, что это было бы лучшим решением для подражания, но, поскольку я не разработчик, возможно, вы могли бы рассказать мне, как интегрировать его в код, который я сообщил в верхней части страницы. ?

iorbita 30.10.2018 20:36

Вместо части echo sprintf('<a href = "%s"%s>%s</a>..... ); поставил код, который я дал. Я отредактировал его, чтобы использовать в качестве значения ваш адрес электронной почты.

Jan Misker 01.11.2018 14:47

Вам также не нужны строки, ссылающиеся на переменную $attributes, поскольку они нужны только для создания ссылки.

Jan Misker 01.11.2018 14:49

Здравствуйте, Ян, и спасибо за ваш ответ, я заменил старый код на ваш, адрес электронной почты кажется скрытым, но префикс mailto все еще отображается. В Joomla, настраиваемое поле электронной почты заставляет меня вставить схему mailto, может поэтому префикс всегда отображается?

iorbita 01.11.2018 16:42

Ах да, это будет ваша проблема, это расширение навязывает что-то не так. За советом обращайтесь к автору расширения.

Jan Misker 02.11.2018 17:12

Другие вопросы по теме