Как обрезать этот текст по количеству символов?

bowa

Новичок
есть вот такой код:

Код: echo '<h4><a href="' . $this->get_link($i). '">' . $this->parent->content[$i]['title'] . '</a></h4>';


он выводит текст.
Как обрезать этот текст по количеству символов? Подскажите пожалуйста.
 

bowa

Новичок
Уважаемый Герр Муллер.
А можно в примере?!
Есть у меня несколько примеров как это делается но тут совсем все по другому.... какие-то точки, кавычки..... Помогите примером пожалуйста.
 

WMix

герр M:)ller
Партнер клуба
PHP:
echo '<h4><a href="' . $this->get_link($i). '">' . substr($this->parent->content[$i]['title'], 100 ) . '</a></h4>';
 

Вурдалак

Продвинутый новичок
Зачем советовать substr()? Ты что, пользуешься однобайтовыми кодировками?
 

WMix

герр M:)ller
Партнер клуба
Вурдалак
я нет, и этой командой тоже не пользуюсь.
 

bowa

Новичок
Спасибо! настоящие! Конечно я не понял ни слова из Вашей краткой дискуссии.... с господином Вурдалак. Но любопытно, даже очень, чем Вы пользуетесь? Я так понял что можно как-то это обрезание по другому сделать?
 

hell0w0rd

Продвинутый новичок
Спасибо! настоящие! Конечно я не понял ни слова из Вашей краткой дискуссии.... с господином Вурдалак. Но любопытно, даже очень, чем Вы пользуетесь? Я так понял что можно как-то это обрезание по другому сделать?
PHP:
function getNiceSubStr($str, $len, $chr = ' ')
{
    return mb_substr($str, 0, mb_strpos($str, $chr, $len));
}

var_dump(getNiceSubStr('Шла Саша по шоссе и сосала сушку!', 23)); // string(31) "Шла Саша по шоссе"
var_dump(mb_substr('Шла Саша по шоссе и сосала сушку!', 0, 23)); // string(23) "Шла Саша по ш"
 

Absinthe

жожо
А теперь усложним задачу: текст может содержать html. Ограничение длины в видимых символах.
Может есть какая-либо библиотека? Пользуюсь своим костылем.
 

hell0w0rd

Продвинутый новичок
Absinthe
Задача сохранить инлайн-теги(a, strong, i, span), или разметку целиком?
В первом случае я бы удалял теги, а дальше искал strpos в html, постепенно укорачивая строку с начала
 

WMix

герр M:)ller
Партнер клуба
Вурдалак намекает, что вероятнее всего твой текст на русском языке в кодировке "utf8" а функция substr коректно работает для русских слов в кодировке windows-1251 или как он охарактеризовал "однобайтовых". этот вопрос тебе еще стоит выяснить прежде чем кричать готово!
я пользуюсь функциями шаблонизатора, но это не твой вариант.
 
Последнее редактирование:

bowa

Новичок
Вот честное слово! Как будто я на Марсе побывал. Ни грамма не понял! Но жутко интересно!!! Я сейчас попробую вот это что выше сам вставить...
 

bowa

Новичок
вот и ни как!
вот это:
PHP:
function getNiceSubStr($str, $len, $chr = ' ')
{
    return mb_substr($str, 0, mb_strpos($str, $chr, $len));
}

var_dump(getNiceSubStr('Шла Саша по шоссе и сосала сушку!', 23)); // string(31) "Шла Саша по шоссе"
var_dump(mb_substr('Шла Саша по шоссе и сосала сушку!', 0, 23)); // string(23) "Шла Саша по ш"
вставить в это:

PHP:
<h3 class="catProductTitle"><?php echo JHTML::link($product->link, $product->product_name); ?></h3>
 

Absinthe

жожо
Absinthe
Задача сохранить инлайн-теги(a, strong, i, span), или разметку целиком?
В первом случае я бы удалял теги, а дальше искал strpos в html, постепенно укорачивая строку с начала
В превью нужно сохранить инлайн.

Укорачивать только не с начала, а с конца. Неэффективно.
Если бы был маппинг между версией с вырезанными тегами и невырезанными, все было бы легко.
 

bowa

Новичок
Так точно! Пишу под джумлой "Русской". Но я не пишу а делаю себе сайт - магазин. Наем программиста.... А саморазвитие? там спросил... там прочитал.... тут попробовал... Все что помогают или подсказывают, записываю в файлы и сохраняю (уже ни раз пригодилось). Если не получается путем сравнений и анализа.... пишу в форум. как и сейчас!
Уважаемый Герр Мюллер очень помог этим:
PHP:
echo '<h4><a href="' . $this->get_link($i). '">' . substr($this->parent->content[$i]['title'], 100 ) . '</a></h4>';
но пременить это сюда:
PHP:
<?php echo JHTML::link($product->link, $product->product_name); ?>
не получилось ((
не говоря уже об этом:
PHP:
function getNiceSubStr($str, $len, $chr = ' ')
{
    return mb_substr($str, 0, mb_strpos($str, $chr, $len));
}

var_dump(getNiceSubStr('Шла Саша по шоссе и сосала сушку!', 23)); // string(31) "Шла Саша по шоссе"
var_dump(mb_substr('Шла Саша по шоссе и сосала сушку!', 0, 23)); // string(23) "Шла Саша по ш"
Поправочка, вот этот вариант прокатил:
PHP:
<?php echo JHTML::link($product->link, mb_substr($product->product_name, 0, 75, 'UTF-8')); ?>
не знаю на сколько он корректен, но работает.
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
прочти лучше тут тут и тут, чтоб хоть легкое представление иметь о чем тебе говорят.
а после если так и не разберешься, спрашивай где сложности
 
  • Like
Реакции: AmdY
Сверху