libs/plugins/shared.mb_wordwrap.php Quellcode

shared.mb_wordwrap.php
gehe zur Dokumentation dieser Datei
1 <?php
9 if (!function_exists('smarty_mb_wordwrap')) {
10 
24  function smarty_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
25  {
26  // break words into tokens using white space as a delimiter
27  $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
28  $length = 0;
29  $t = '';
30  $_previous = false;
31  $_space = false;
32 
33  foreach ($tokens as $_token) {
34  $token_length = mb_strlen($_token, Smarty::$_CHARSET);
35  $_tokens = array($_token);
36  if ($token_length > $width) {
37  if ($cut) {
38  $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
39  }
40  }
41 
42  foreach ($_tokens as $token) {
43  $_space = !!preg_match('!^\s$!S' . Smarty::$_UTF8_MODIFIER, $token);
44  $token_length = mb_strlen($token, Smarty::$_CHARSET);
45  $length += $token_length;
46 
47  if ($length > $width) {
48  // remove space before inserted break
49  if ($_previous) {
50  $t = mb_substr($t, 0, - 1, Smarty::$_CHARSET);
51  }
52 
53  if (!$_space) {
54  // add the break before the token
55  if (!empty($t)) {
56  $t .= $break;
57  }
58  $length = $token_length;
59  }
60  } elseif ($token == "\n") {
61  // hard break must reset counters
62  $_previous = 0;
63  $length = 0;
64  }
65  $_previous = $_space;
66  // add the token
67  $t .= $token;
68  }
69  }
70 
71  return $t;
72  }
73 }




Korrekturen, Hinweise und Ergänzungen

Bitte scheuen Sie sich nicht und melden Sie, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Support Forum wählen. Es ist eine kostenlose Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden kommentarlos entfernt.