Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Как отключить функцию totranslit в inc/addnews.php?

Как отключить функцию totranslit в inc/addnews.php?


     30.01.2016    Все вопросы » Хаки    1697

вопрос
Добрый день!

Подскажите пожалуйста как можно отключить функцию totranslit в inc/addnews.php
что бы при добавлении новости alt_name был на русском языке, но при этом сохранить функцию замены пробелов на "-"

Спасибо.

Ответа пока нет


4 комментария

Kane
Юзер

Kane - 30 января 2016 16:51 -

Как вариант.

Открыть inc/addnews.php

Найти:
if( trim( $alt_name ) == "" or ! $alt_name ) $alt_name = totranslit( stripslashes( $title ), true, false );
else $alt_name = totranslit( stripslashes( $alt_name ), true, false );


Заменить на:
if( trim( $alt_name ) == "" or ! $alt_name ) $alt_name = preg_replace('| +|', '-', stripslashes( $title ) );
else $alt_name = preg_replace('| +|', '-', stripslashes( $alt_name ) );

veliart
Юзер

veliart - 31 января 2016 09:59 -

Спасибо. Ваш вариант отлично подходит, но есть не которые проблемы с регулярным выражением. Если в alt_name
встречаются символы
/ () они не удаляются
если строка содержит : "" а после английские буквы строка обрезается до этих символов

lutskboy
Эксперт

lutskboy - 30 января 2016 17:03 -

не пробовал. но должно сработать

function translit($str)
{
    $str = preg_replace("/\s+/", "-", $str);
    $str = preg_replace("/[^а-я0-9]/iu", "", $str);
    return $str;
}

и заменить что то типа этого
totranslit( stripslashes( $alt_name ), true, false )
на
translit( stripslashes( $alt_name ) )

veliart
Юзер

veliart - 31 января 2016 10:04 -

Спасибо. Здесь, если строка содержит англ. буквы они полностью обрезаются и почему то пробелы не заменяются -. Зато все символы типа : "" () удаляются.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх