[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Smarty shared plugin 4 * 5 * @package Smarty 6 * @subpackage PluginsShared 7 */ 8 9 if(!function_exists('smarty_mb_wordwrap')) { 10 11 /** 12 * Wrap a string to a given number of characters 13 * 14 * @link http://php.net/manual/en/function.wordwrap.php for similarity 15 * @param string $str the string to wrap 16 * @param int $width the width of the output 17 * @param string $break the character used to break the line 18 * @param boolean $cut ignored parameter, just for the sake of 19 * @return string wrapped string 20 * @author Rodney Rehm 21 */ 22 function smarty_mb_wordwrap($str, $width=75, $break="\n", $cut=false) 23 { 24 // break words into tokens using white space as a delimiter 25 $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE); 26 $length = 0; 27 $t = ''; 28 $_previous = false; 29 30 foreach ($tokens as $_token) { 31 $token_length = mb_strlen($_token, Smarty::$_CHARSET); 32 $_tokens = array($_token); 33 if ($token_length > $width) { 34 // remove last space 35 $t = mb_substr($t, 0, -1, Smarty::$_CHARSET); 36 $_previous = false; 37 $length = 0; 38 39 if ($cut) { 40 $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE); 41 // broken words go on a new line 42 $t .= $break; 43 } 44 } 45 46 foreach ($_tokens as $token) { 47 $_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token); 48 $token_length = mb_strlen($token, Smarty::$_CHARSET); 49 $length += $token_length; 50 51 if ($length > $width) { 52 // remove space before inserted break 53 if ($_previous && $token_length < $width) { 54 $t = mb_substr($t, 0, -1, Smarty::$_CHARSET); 55 } 56 57 // add the break before the token 58 $t .= $break; 59 $length = $token_length; 60 61 // skip space after inserting a break 62 if ($_space) { 63 $length = 0; 64 continue; 65 } 66 } else if ($token == "\n") { 67 // hard break must reset counters 68 $_previous = 0; 69 $length = 0; 70 } else { 71 // remember if we had a space or not 72 $_previous = $_space; 73 } 74 // add the token 75 $t .= $token; 76 } 77 } 78 79 return $t; 80 } 81 82 } 83 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |