Joomla中的“自定义URL”字段-删除mailto前缀

时间:2018-10-25 09:14:02

标签: php url joomla field mailto

在Joomla中,我使用URL自定义字段(MAILTO模式)来显示电子邮件地址。 问题是Joomla在代码中两次插入了mailto前缀:一次是在href属性中,另一次是在链接标签之间,如下所示:

<span class="field-value"><a href="mailto:myEmail@some.site" rel="nofollow" target="_blank">mailto:myEmail@some.site</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前缀。

如何进行? ……也许有正则表达式规则?问题,我不是开发人员……

谢谢您的帮助,

洛伦佐

2 个答案:

答案 0 :(得分:0)

谢谢您的回复,我想您可以再试一次。

我的英语不太好,有些地方表达不清楚。 enter image description here

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:info@kinoki.at";
echo "<pre>";
print_r( preg_replace("/(^(http|https|ftp):\/\/)|(^mailto:)/i","",htmlspecialchars($value)));
echo "<pre>";exit;

答案 1 :(得分:0)

您可能会遇到此问题,因为Joomla试图掩盖电子邮件地址。最好的方法是,使用内置的电子邮件隐藏功能使用推荐的方式显示电子邮件地址。

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

另请参阅:https://docs.joomla.org/How_to_cloak_email_addresses