# Hasanov (12.10.2017 / 21:13)
За кончиной процесс!
Тогда уж лучше сделай так (чтобы слова не обрывались) :
* (+/-)
///Ссылка на гостевую////
$length = 35; // Длина строки, после которой обрезать лишнее
if ($set['mod_guest'] || $rights >= 7)
echo '<div class="mainmenu"><b><a href="guestbook/index.php">' . $lng['guestbook'] . '</a></b> (' . counters::guestbook() . ')</div>';
///текст из гостевой////
echo '<div class="list1">';
$guest = mysql_fetch_assoc(mysql_query("SELECT `text` FROM `guest` ORDER BY `time` DESC LIMIT 1"));
$guest_text = $guest['text'];
if (mb_strlen($guest_text, 'UTF-8') > $length) {
$guest_text = mb_substr($guest_text, 0, $length, 'UTF-8');
$guest_text = preg_replace('~(?:\s\S+$|\s*$)~', '', $guest_text);
$guest_text .= ' <a href="guestbook/index.php"><span style="color:#FF0000;">Дальше...</span>';
}
echo $guest_text . '</div>';
Забыли только мультиязычности :-) вместо Дальше...
' . $lng['next'] . ' в языковым пакете есть оказывается
# Hasanov (13.10.2017 / 07:44)
Забыли только мультиязычности :-) вместо Дальше...
' . $lng['next'] . ' в языковым пакете есть оказывается
Можно вместо слова "Дальше" использовать указатели (стрелки), и тогда мультиязычность не понадобится.
Я немного подправил код, чтоб при минимальной длине слово не обрезалось. Надо добавить этот метод в файл /incfiles/classes/
functions.phpfunctions.php (+/-)
/**
* Сокращение текста
*
* @param string $text - Текст для обработки
* @param string $link - Ссылка на оригинал
* @param integer $length - Длина сокращённого текста
*
* @return string
*/
public static function reduction($text, $link, $length = 70)
{
if (mb_strlen($text, 'UTF-8') > $length) {
$substr = mb_substr($text, 0, $length, 'UTF-8');
$text = strpos($substr, ' ') !== false
? preg_replace('~(\s)?(?(1)\S+$|\s$)~', '', $substr)
: strstr($text, ' ', true);
$text .= " ... <a href='$link'><span style='color:red;'>»»</span>";
}
return $text;
}
А в файле, в котором будет вывод сокращённого текста, надо прописать этот код:
code (+/-)
///Ссылка на гостевую////
if ($set['mod_guest'] || $rights >= 7) {
echo '<div class="mainmenu"><b><a href="guestbook/index.php">' .
$lng['guestbook'] . '</a></b> (' . counters::guestbook() . ')</div>';
}
$guest = mysql_fetch_assoc(mysql_query("SELECT `text` FROM `guest` ORDER BY `time` DESC LIMIT 1"));
$text = $guest['text'];
$link = 'guestbook/index.php';
///текст из гостевой////
echo '<div class="list1">' . functions::reduction($text, $link) . '</div>';
Если понадобится изменить длину сокращённого текста, то её можно передать третьим параметром в вызов метода functions::reduction().
Пример:
functions::reduction($text, $link,
35);
ДоХтор, А как такое реализовать в 7 версии?)
Кеня, Нужно код поглядеть, сразу не скажу.
# ДоХтор (02.02.2020 / 13:21)
Кеня, Нужно код поглядеть, сразу не скажу.
Будет время погляди пожалуйста) Буду примного благодарен