Changeset 423 for branches/1.1dev/lib


Ignore:
Timestamp:
Aug 13, 2013 11:52:52 PM (11 years ago)
Author:
anonymous
Message:

Backporting fixes to v1.1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/1.1dev/lib/Utilities.inc.php

    r401 r423  
    154154 * @since   29 Mar 2006 13:48:49
    155155 */
    156 function truncate($str, $len, $where='middle')
    157 {
     156function truncate($str, $len, $where='end', $delim='
')
     157{
     158    if ($len <= 3 || mb_strlen($str) <= 3) {
     159        return '';
     160    }
    158161    $part1 = floor(($len - 3) / 2);
    159162    $part2 = ceil(($len - 3) / 2);
    160163    switch ($where) {
    161164    case 'start' :
    162         return preg_replace(array(sprintf('/^.{4,}(.{%s})$/', $part1 + $part2), '/\s*\.{3,}\s*/'), array('...$1', '...'), $str);
     165        return preg_replace(array(sprintf('/^.{4,}(.{%s})$/sU', $part1 + $part2), '/\s*\.{3,}\s*/sU'), array($delim . '$1', $delim), $str);
    163166        break;
    164167    default :
    165168    case 'middle' :
    166         return preg_replace(array(sprintf('/^(.{%s}).{4,}(.{%s})$/', $part1, $part2), '/\s*\.{3,}\s*/'), array('$1...$2', '...'), $str);
     169        return preg_replace(array(sprintf('/^(.{%s}).{4,}(.{%s})$/sU', $part1, $part2), '/\s*\.{3,}\s*/sU'), array('$1' . $delim . '$2', $delim), $str);
    167170        break;   
    168171    case 'end' :
    169         return preg_replace(array(sprintf('/^(.{%s}).{4,}$/', $part1 + $part2), '/\s*\.{3,}\s*/'), array('$1...', '...'), $str);
    170         break;   
     172        return preg_replace(array(sprintf('/^(.{%s}).{4,}$/sU', $part1 + $part2), '/\s*\.{3,}\s*/sU'), array('$1' . $delim, $delim), $str);
     173        break;
    171174    }
    172175}
Note: See TracChangeset for help on using the changeset viewer.