Created
July 9, 2012 07:15
-
-
Save elinw/3074763 to your computer and use it in GitHub Desktop.
Replacement for truncate method tracker_item_id=28795
This file contains 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
/** | |
* Method to truncate introtext | |
* | |
* The goal is to get the proper length plain text string with as much of | |
* the html intact as possible with all tags properly closed. | |
* | |
* @param string $html The content of the introtext to be truncated | |
* @param integer $maxLength The maximum number of charactes to render | |
* | |
* @return string The truncated string | |
*/ | |
public static function truncate($html, $maxLength = 0) | |
{ | |
$baseLength = strlen($html); | |
$diffLength = 0; | |
// First get the plain text string. This is the rendered text we want to end up with. | |
$ptString = JHtml::_('string.truncate', $html, $maxLength, $noSplit = true, $allowHtml = false); | |
for ($maxLength; $maxLength < $baseLength;) | |
{ | |
// Now get the string if we allow html. | |
$htmlString = JHtml::_('string.truncate', $html, $maxLength, $noSplit = true, $allowHtml = true); | |
// Now get the plain text from the html string. | |
$htmlStringToPtString = JHtml::_('string.truncate', $htmlString, $maxLength, $noSplit = true, $allowHtml = false); | |
// If the new plain text string matches the original plain text string we are done. | |
if ($ptString == $htmlStringToPtString) | |
{ | |
return $htmlString; | |
} | |
// Get the number of html tag characters in the first $maxlength characters | |
$diffLength = strlen($ptString) - strlen($htmlStringToPtString); | |
// Set new $maxlength that adjusts for the html tags | |
$maxLength += $diffLength; | |
if ($baseLength <= $maxLength) | |
{ | |
return $html; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment