/[LeafOK_CVS]/fenglin/lib/str_process.inc.php
ViewVC logotype

Diff of /fenglin/lib/str_process.inc.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.5 by sysadm, Fri Dec 10 15:54:32 2004 UTC Revision 1.11 by sysadm, Mon Mar 24 05:46:49 2025 UTC
# Line 1  Line 1 
1  <?  <?
2    function split_line($str, $prefix = "", $width = 76, $lines_limit = PHP_INT_MAX)
 function split_line($str,$prefix="",$width=75)  
3  {  {
4          $lines = array();          if ($width <= 0)
         $lines_count = 0;  
         $len = strlen($str);  
   
         $hz_ok = true;  
           
         if ($width<=0)  
5                  return $str;                  return $str;
6                    
7            $result = "";
8            $len = strlen($str);
9            $prefix_len = strlen($prefix);
10    
11            $lines_count = 0;
12    
13          $line = $prefix;          $line = $prefix;
14          $line_count = strlen($line);          $line_len = $prefix_len;
15          for($i=0;$i<$len;$i++)          for ($i = 0; $i < $len && $lines_count < $lines_limit; $i++)
16          {          {
17                  $line.=$str[$i];                  $c = $str[$i];
18                  $line_count++;  
19                  if (ord($str[$i])>127)                  // Skip special characters
20                  {                  if ($c == "\r" || $c == "\7")
                         $hz_ok = (!$hz_ok);  
                 }  
                 if (ord($str[$i])<=127)  
21                  {                  {
22                          $hz_ok = true;                          continue;
23                  }                  }
24                  if ($line_count >= $width && $hz_ok)                                  
25                    if ($c == "\n")
26                  {                  {
27                          $lines[$lines_count++] = $line;                          $result .= ($line . "\n");
28                            $lines_count++;
29                          $line = $prefix;                          $line = $prefix;
30                          $line_count = strlen($line);                          $line_len = $prefix_len;
31                            continue;
32                  }                  }
         }  
         $lines[$lines_count++] = $line;  
33    
34          $result = "";                  // Process UTF-8 Chinese characters
35          for($i=0;$i<$lines_count;$i++)                  $v1 = ord($c);
36          {                  if (($v1 & 0b10000000) == 0b10000000) //head of multi-byte character
37                  $result.=($lines[$i]."\r\n");                  {
38          }                          $v2 = ($v1 & 0b01111000) << 1;
39          return $result;                          while ($v2 & 0b10000000)
40  }                          {
41                                    $i++;
42                                    $v3 = $str[$i];
43                                    $c .= $v3;
44                                    $v2 = ($v2 & 0b01111111 ) << 1;
45                            }
46    
47                            // Each UTF-8 CJK character should use two character length for display
48                            if ($line_len + 2 > $width)
49                            {
50                                    $result .= ($line . "\n");
51                                    $lines_count++;
52                                    $line = $prefix;
53                                    $line_len = $prefix_len;
54                            }
55                            $line_len += 2;
56                    }
57                    else
58                    {
59                            $line_len++;
60                    }
61    
62  function str_process($str,$prefix="",$width=75)                  $line .= $c;
 {  
         $result = "";  
           
         $lines = explode("\n",str_replace("\r\n","\n",$str));  
63    
64          foreach($lines as $line)                  if ($line_len >= $width)
65          {                  {
66                  $result .= split_line($line,$prefix,$width);                          $result .= ($line . "\n");
67                            $lines_count++;
68                            $line = $prefix;
69                            $line_len = $prefix_len;
70                    }
71          }          }
           
         return $result;  
 }  
72    
73  function str_b_lines($str,$max_line=1)          if ($lines_count < $lines_limit)
 {  
         $result = "";  
         $l = 0;  
         $lines = explode("\n",str_replace("\r\n","\n",$str));  
         foreach($lines as $line)  
74          {          {
75                  $result .= ($line."\r\n");                  $result .= $line;
                 $l += (strlen($line)/256 + 1);  
                 if ($l >= $max_line)  
                         break;  
76          }          }
77    
78          return $result;          return $result;
79  }  }
   
80  ?>  ?>


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1