Last active
February 12, 2022 16:00
-
-
Save nagiyevelchin/45c0181b244fadf11bba1dddebd631c4 to your computer and use it in GitHub Desktop.
Truncate a string to a certain length in PHP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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