Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2016, 14:23   #1
snup55
Новичок
Джуниор
 
Регистрация: 20.11.2016
Сообщений: 2
По умолчанию CodeIgniter как добавлять на русском новости

добрый день!
При добавления новости на русском языке у меня получается ссылка такого рода
_http://127.0.0.1/news/???????_????????
где ???????_???????? должно быть название новости
если добавлять новость на английском все работает как надо
_http://127.0.0.1/news/agent_carter

использую CodeIgniter-3.1.2

C:\xampp\htdocs\application\control lers\news.php:

PHP код:
<?php
defined
('BASEPATH') OR exit('No direct script access allowed');

    class 
News extends CI_Controller {

        public function 
__construct()
        {
            
parent::__construct();
            
$this->load->model('news_model');
            
$this->load->helper('url_helper');
        }

        public function 
index()
        {
            
$data['news'] = $this->news_model->get_news();
            
$data['title'] = 'Новости';

            
$this->load->view('templates/header'$data);
            
$this->load->view('news/index'$data);
            
$this->load->view('templates/footer');
        }

        public function 
view($slug NULL)
        {
            
$data['news_item'] = $this->news_model->get_news($slug);

            if (empty(
$data['news_item']))
            {
                    
show_404();
            }

            
$data['title'] = $data['news_item']['title'];

            
$this->load->view('templates/header'$data);
            
$this->load->view('news/view'$data);
            
$this->load->view('templates/footer'$data);
        }
        
        public function 
create()
        {
            
$this->load->helper('form');
            
$this->load->library('form_validation');

            
$data['title'] = 'Добавить новость';

            
$this->form_validation->set_rules('title''Title''required');
            
$this->form_validation->set_rules('text''text''required');
            
$this->form_validation->set_rules('author''author''required');
            
//$this->form_validation->set_rules('images', 'images', 'required');

            
if ($this->form_validation->run() === FALSE)
            {
                
$this->load->view('templates/header'$data);
                
$this->load->view('news/create');
                
$this->load->view('templates/footer');

            }
            else
            {
                
$this->news_model->set_news();
                
$this->load->view('news/success');
            }
        }
    }
?>
C:\xampp\htdocs\application\models\ news_model.php:
PHP код:
<?php
defined
('BASEPATH') OR exit('No direct script access allowed');

    class 
News_model extends CI_Model {

        public function 
__construct(){
            
            
$this->load->database();
        }
        
        public function 
get_news($slug FALSE){
            
            if (
$slug === FALSE){
                    
$query $this->db->get('news');
                    return 
$query->result_array();
            }
            
$query $this->db->get_where('news', array('slug' => $slug));
            return 
$query->row_array();
        }
        
        public function 
set_news()
        {
            
$this->load->helper('url');
            
//$now = new DateTime(date('Y-m-d H:i:s'));
            
$date = ('Y-m-d H:i:s');

            
$slug url_title($this->input->post('title'), 'underscore'TRUE);

            
$data = array(
                
'title' => $this->input->post('title'),
                
'slug' => $slug,
                
'text' => $this->input->post('text'),
                
'author' => $this->input->post('author'),
                
'date' => $this->input->post('date')
            );

            return 
$this->db->insert('news'$data);
        }
    }
?>
как мне сделать что бы я мог добавлять на русском новости а имено название новости
буду признательный за помощь

Видео где ошибка
https://youtu.be/-5XPpgQ3-BA
snup55 вне форума Ответить с цитированием
Старый 20.11.2016, 15:56   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

https://github.com/bcit-ci/CodeIgnit...onfig.php#L145

url_title не работает с кириллицей – вместо использования этой функции нужно делать транслитерацию, в соответствии с требованиям к URL.
Andkorol вне форума Ответить с цитированием
Старый 20.11.2016, 19:38   #3
snup55
Новичок
Джуниор
 
Регистрация: 20.11.2016
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
https://github.com/bcit-ci/CodeIgnit...onfig.php#L145

url_title не работает с кириллицей – вместо использования этой функции нужно делать транслитерацию, в соответствии с требованиям к URL.
спасибо
немного переделал url_title и работает как часики

PHP код:
    function url_title($str$separator '-'$lowercase FALSE)
    {
        if (
$separator === 'dash')
        {
            
$separator '-';
        }
        elseif (
$separator === 'underscore')
        {
            
$separator '_';
        }

        
$q_separator preg_quote($separator'#');

        
/*$trans = array(
            '&.+?;'            => '',
            '[^\w\d _-]'        => '',
            '\s+'            => $separator,
            '('.$q_separator.')+'    => $separator
        );*/
        
        
$converter = array(
            
'&.+?;'            => '',
            
'[^\w\d _-]'        => '',
            
'\s+'            => $separator,
            
'('.$q_separator.')+'    => $separator,
            
'а' => 'a',   'б' => 'b',   'в' => 'v',
            
'г' => 'g',   'д' => 'd',   'е' => 'e',
            
'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
            
'и' => 'i',   'й' => 'y',   'к' => 'k',
            
'л' => 'l',   'м' => 'm',   'н' => 'n',
            
'о' => 'o',   'п' => 'p',   'р' => 'r',
            
'с' => 's',   'т' => 't',   'у' => 'u',
            
'ф' => 'f',   'х' => 'h',   'ц' => 'c',
            
'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
            
'ь' => '\'',  'ы' => 'y',   'ъ' => '\'',
            
'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
             
            
'А' => 'A',   'Б' => 'B',   'В' => 'V',
            
'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
            
'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
            
'И' => 'I',   'Й' => 'Y',   'К' => 'K',
            
'Л' => 'L',   'М' => 'M',   'Н' => 'N',
            
'О' => 'O',   'П' => 'P',   'Р' => 'R',
            
'С' => 'S',   'Т' => 'T',   'У' => 'U',
            
'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
            
'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
            
'Ь' => '\'',  'Ы' => 'Y',   'Ъ' => '\'',
            
'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
        );

        
$str strip_tags($str);
        foreach (
$converter as $key => $val)
        {
            
$str preg_replace('#'.$key.'#i'.(UTF8_ENABLED 'u' ''), $val$str);
        }

        if (
$lowercase === TRUE)
        {
            
$str strtolower($str);
        }

        return 
trim(trim($str$separator));
    }

добавил

PHP код:
            'а' => 'a',   'б' => 'b',   'в' => 'v',
            
'г' => 'g',   'д' => 'd',   'е' => 'e',
            
'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
            
'и' => 'i',   'й' => 'y',   'к' => 'k',
            
'л' => 'l',   'м' => 'm',   'н' => 'n',
            
'о' => 'o',   'п' => 'p',   'р' => 'r',
            
'с' => 's',   'т' => 't',   'у' => 'u',
            
'ф' => 'f',   'х' => 'h',   'ц' => 'c',
            
'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
            
'ь' => '\'',  'ы' => 'y',   'ъ' => '\'',
            
'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
             
            
'А' => 'A',   'Б' => 'B',   'В' => 'V',
            
'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
            
'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
            
'И' => 'I',   'Й' => 'Y',   'К' => 'K',
            
'Л' => 'L',   'М' => 'M',   'Н' => 'N',
            
'О' => 'O',   'П' => 'P',   'Р' => 'R',
            
'С' => 'S',   'Т' => 'T',   'У' => 'U',
            
'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
            
'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
            
'Ь' => '\'',  'Ы' => 'Y',   'Ъ' => '\'',
            
'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya'
snup55 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как в комбобокс правильно добавлять прежние значения? Smogg Qt и кроссплатформенное программирование С/С++ 0 03.02.2014 16:58
Joomla 1.0 там при добавлении новости нет кнопки ок типо добавить ! Как там добавлять ??? valerka92 WordPress и другие CMS 1 10.09.2011 19:27
как добавлять в файл ZET78 Общие вопросы C/C++ 3 02.05.2010 20:27
Как автоматически добавлять noindex и nofollow к ссылке? dronsapun PHP 3 04.04.2010 22:05