Технический сбой

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

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


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

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

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

Спасибо.

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


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

Kane
Юзер

Kane - -

Как вариант.

Открыть 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 - -

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

lutskboy
Эксперт

lutskboy - -

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

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 - -

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

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

наверх