PHP Classes

File: libs/smarty/plugins/shared.mb_wordwrap.php

Recommend this page to a friend!
  Classes of Ali Sharifi   MVC 4 Dummies   libs/smarty/plugins/shared.mb_wordwrap.php   Download  
File: libs/smarty/plugins/shared.mb_wordwrap.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: MVC 4 Dummies
Web development PHP MVC framework
Author: By
Last change:
Date: 9 years ago
Size: 2,858 bytes
 

Contents

Class file image Download
<?php
/**
 * Smarty shared plugin
 *
 * @package Smarty
 * @subpackage PluginsShared
 */

if (!function_exists('smarty_mb_wordwrap')) {

   
/**
     * Wrap a string to a given number of characters
     *
     * @link http://php.net/manual/en/function.wordwrap.php for similarity
     *
     * @param string $str the string to wrap
     * @param int $width the width of the output
     * @param string $break the character used to break the line
     * @param boolean $cut ignored parameter, just for the sake of
     *
     * @return string wrapped string
     * @author Rodney Rehm
     */
   
function smarty_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
    {
       
// break words into tokens using white space as a delimiter
       
$tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
       
$length = 0;
       
$t = '';
       
$_previous = false;

        foreach (
$tokens as $_token) {
           
$token_length = mb_strlen($_token, Smarty::$_CHARSET);
           
$_tokens = array($_token);
            if (
$token_length > $width) {
               
// remove last space
               
$t = mb_substr($t, 0, - 1, Smarty::$_CHARSET);
               
$_previous = false;
               
$length = 0;

                if (
$cut) {
                   
$_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
                   
// broken words go on a new line
                   
$t .= $break;
                }
            }

            foreach (
$_tokens as $token) {
               
$_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token);
               
$token_length = mb_strlen($token, Smarty::$_CHARSET);
               
$length += $token_length;

                if (
$length > $width) {
                   
// remove space before inserted break
                   
if ($_previous && $token_length < $width) {
                       
$t = mb_substr($t, 0, - 1, Smarty::$_CHARSET);
                    }

                   
// add the break before the token
                   
$t .= $break;
                   
$length = $token_length;

                   
// skip space after inserting a break
                   
if ($_space) {
                       
$length = 0;
                        continue;
                    }
                } elseif (
$token == "\n") {
                   
// hard break must reset counters
                   
$_previous = 0;
                   
$length = 0;
                } else {
                   
// remember if we had a space or not
                   
$_previous = $_space;
                }
               
// add the token
               
$t .= $token;
            }
        }

        return
$t;
    }
}