Skip to content

Instantly share code, notes, and snippets.

@Andrew8xx8
Created March 22, 2011 06:46
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Andrew8xx8/880864 to your computer and use it in GitHub Desktop.
Save Andrew8xx8/880864 to your computer and use it in GitHub Desktop.
Text Functions
<?
/**
* Cuts text saving words
* @param $text Text to cut
* @param $size Length in chars
* @return string Text after cut
*/
function cut_text($text, $size){
if (strlen($text) < $size)
return $text;
$cut = (array)explode('\n\n', wordwrap($text,$size,'\n\n'));
return $cut[0]."...";
}
/**
* Provide russian translation for php date() funciton
* @param $format
* @param $date
* @param bool $genitive
* @return string
*/
function russian_date($format, $date, $genitive=true){
// Generationg Timestamp
$ts = strtotime($date);
$month = date("n", $ts);
if($genitive)
$month = int2months($month);
else
$mont = int2month($month);
$format = preg_replace("/F/", $month, $format);
$day = date("N", $ts);
// ODBC формат. Воскресенье - первый день
$days = array ( 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье');
$day = $days[$day - 1];
$format = preg_replace("/l/", $day, $format);
$result = date($format, $ts);
return $result;
}
/**
* Convert number of month to the text
* @param $int
* @return string
*/
function int2months ( $int ) {
$months = array ( 'Января', 'Февраля', 'Марта', 'Апреля', 'Мая', '�?юня', '�?юля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря' );
return $months[$int - 1];
}
/**
* Convert number of month to the text
* @param $int
* @return string
*/
function int2month ( $int ) {
$months = array ( 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', '�?юнь', '�?юль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' );
return $months[$int - 1];
}
/**
* Transliteral string
* @param $string
* @return mixed|string
*/
function transliteral ( $string ) {
$string = mb_strtolower ( $string );
//$string = iconv ( '',
$lit = array ( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'l', 'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i',
'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't',
'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'ts', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ь' => '', 'ы' => 'i', 'ъ' => '',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya', ' ' => '_' );
$string = str_replace ( array_keys ( $lit ), array_values ( $lit ), $string );
return $string;
}
?>
@realmyst
Copy link

transliteral - нужно учитывать регистр, нельзя все сводить к нижнему)

cut_text - нужна работа с тегами, можно, например, в виде параметра (необязательного). Так будет правильнее, чем несколько различных функций, по сути выполняющих одно и то же.

нужно добавить функции конвертации массива/строки из кодировки в кодировку, обрезание текста с учетом размера одного символа в кодировке (чтобы вместо 40 символов не оставил только 20 ). Позже кину реализацию )

Ну и склонение текста

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment