UTF8 Char в кодеигниторе - PullRequest
1 голос
/ 21 августа 2011

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

Я из Аргентины, поэтому мне приходится работать с символом «-».Для SEO я хочу включить «ñ» в URL для некоторых слов, например, у меня есть:

  • Контроллер: webdesign.php
  • Маршрут: $ route ['liquñoweb'] = «webdesign»;

Но когда я захожу на «www.domain.com/diseñoweb», это не работает.И мне нужен символ «ñ» в URL.Кто-нибудь знает, как я могу это сделать?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 21 августа 2011

То, что вы хотите сделать, скорее всего, не будет работать так, как вы хотите, потому что URL-адреса не могут содержать символы, отличные от ASCII.См. здесь для фона.

Я думаю, вам нужно создать маршрут для версии с кодированием URL, например:

$route['dise%c3%b1oweb'] = "webdesign";

, если вы затем введете URL, содержащий

diseñoweb

современный браузер автоматически URL-кодирует символ.

2 голосов
/ 21 августа 2011

Вы можете попробовать это

$route[rawurlencode('diseñoweb')] = “webdesign”;
2 голосов
/ 21 августа 2011

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

$config['permitted_uri_chars'] = 'a-z 0-9_\-ñ'; 

Затем в system / core / URI.php в строке 231 замените

if ( ! preg_match("|^[".str_replace(array('\\-', '\-'), '-', preg_quote($this->config->item('permitted_uri_chars'), '-'))."]+$|i", $str)) 

до

if ( ! preg_match("|^[".str_replace(array('\\-', '\-'), '-', preg_quote($this->config->item('permitted_uri_chars'), '-'))."]+$|i", utf8_encode($str))) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...