的Joomla! 3从URL中删除非英语和特殊字符

时间:2014-05-21 09:58:12

标签: php joomla routes

我正在使用Joomla! 3.3,我的实际网址是这样的:

my_domain.com/component/newsletter/unsubscribe/email-domain.com/25

我的Component的router.php:

function newsletterBuildRoute(&$query) {
    $segments = array();
    $segments[] = $query['method'];
    $segments[] = $query['email'];
    $segments[] = $query['id'];
    unset($query['method']);
    unset($query['email']);
    unset($query['contact_id']);
    return $segments;
}

function newsletterParseRoute($segments) {
    $vars = array();
    $vars['method'] = $segments[0];
    $vars['email'] = $segments[1];
    $vars['contact_id'] = $segments[2];
    return $vars;
}

但是当我尝试这个时:

echo JFactory::getApplication()->input->get('email');

我明白了:

emaildomain.com //  '@' is stripped

此外,当我在网址中添加 任何 非英语字符时,它也会被删除。

为什么会发生这种情况?

P.S :我在全局配置中将unicode别名设置为yes

1 个答案:

答案 0 :(得分:1)

如果您参考JInput的Joomla文档,您将看到有一些过滤器被添加为参数:

http://docs.joomla.org/Retrieving_request_data_using_JInput

所以您可以尝试以下内容:

echo JFactory::getApplication()->input->get('email', null, 'RAW');

我使用null作为第二个参数,它应该是默认值。