Skip to content

Instantly share code, notes, and snippets.

@nagiyevelchin
Last active February 12, 2022 16:00
Show Gist options
  • Save nagiyevelchin/45c0181b244fadf11bba1dddebd631c4 to your computer and use it in GitHub Desktop.
Save nagiyevelchin/45c0181b244fadf11bba1dddebd631c4 to your computer and use it in GitHub Desktop.
Truncate a string to a certain length in PHP
<?php
/**
* Truncate a string to a certain length if necessary,
* optionally splitting in the middle of a word, and
* appending the $etc string or inserting $etc into the middle.
*
* @param string $string input string
* @param integer $length length of truncated text
* @param string $etc end string
* @param boolean $break_words truncate at word boundary
* @param boolean $middle truncate in the middle of text
*
* @return string truncated string
*/
function truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) {
if ($length == 0) {
return '';
}
if (mb_strlen($string, 'UTF-8') > $length) {
$length -= min($length, mb_strlen($etc, 'UTF-8'));
if (!$break_words && !$middle) {
$string = preg_replace('/\s+?(\S+)?$/u', '', mb_substr($string, 0, $length + 1, 'UTF-8'));
}
if (!$middle) {
return mb_substr($string, 0, $length, 'UTF-8') . $etc;
}
return mb_substr($string, 0, $length / 2, 'UTF-8') . $etc . mb_substr($string,
-$length / 2,
$length,
'UTF-8');
}
return $string;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment