2014-05-21 33 views
1

我使用Joomla! 3.3,和我的實際URL是這樣的:Joomla! 3條非英文和特殊字符從URL

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

我的組件的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 

而且當我把任何 url中的非英文字符,它也會被刪除。

任何想法,爲什麼這是發生?

PS:我設置在全局配置Unicode的別名是

回答

1

如果你指的Joomla的文檔JInput,你會看到有一些被添加作爲參數的過濾器:

http://docs.joomla.org/Retrieving_request_data_using_JInput

那麼,你可以嘗試如下:

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

我已經使用null作爲第二個參數,它應該是默認值。

+0

謝謝,根據本文檔,當使用'RAW'作爲第三個參數時,不提供衛生設施。但爲什麼它將第一個破折號替換爲冒號? –

+0

冒號的第一個破折號?你指的是哪一條? – Lodder

+0

例如'example.com/component/products/email-me-alireza @ example.com'每次都會改變爲'.../email:[email protected] ...' –