Я пытаюсь сократить фрагмент текста до вокруг 30 символов. Если это короче, я хочу предыдущую строку. Кроме того, он имеет код в стиле форума. Я хочу выделить все в квадратных скобках ([]
)
Я использую пару функций для этого. forum_extract
это то, что я называю.
function forum_extract($text) {
return str_replace("\n",'<br />', limit_text(preg_replace('/\[[^\]]+\]/', '', $text), 30));
}
function limit_text($text, $limit) {
if (strlen($text) <= $limit)
return $text;
$words = str_word_count($text, 2);
$pos = array_keys($words);
return substr($text, 0, $pos[$limit]) . '...';
}
Проблема возникает в limit_text
, когда предоставленный $text
короче, чем предел. Все, что я получаю, это "...".
Чтобы это произошло, он должен был пройти оговорку в limit_text
. Но как?
Вот литерал, который передается в limit_text
, но выглядит как "...":
Friend of ours paid 150€ the other day from Malaga. Spread across 4 people it didn't seem to bad, given it was a 8+ hour day for the driver, petrol etc.