103 |
- |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
// mPDF 5.7
|
|
|
4 |
// Replace a section of an array with the elements in reverse
|
|
|
5 |
function array_splice_reverse(&$arr, $offset, $length) {
|
|
|
6 |
$tmp = (array_reverse(array_slice($arr, $offset, $length)));
|
|
|
7 |
array_splice($arr, $offset, $length, $tmp);
|
|
|
8 |
}
|
|
|
9 |
|
|
|
10 |
|
|
|
11 |
// mPDF 5.6.23
|
|
|
12 |
function array_insert(&$array, $value, $offset) {
|
|
|
13 |
if (is_array($array)) {
|
|
|
14 |
$array = array_values($array);
|
|
|
15 |
$offset = intval($offset);
|
|
|
16 |
if ($offset < 0 || $offset >= count($array)) { array_push($array, $value); }
|
|
|
17 |
else if ($offset == 0) { array_unshift($array, $value); }
|
|
|
18 |
else {
|
|
|
19 |
$temp = array_slice($array, 0, $offset);
|
|
|
20 |
array_push($temp, $value);
|
|
|
21 |
$array = array_slice($array, $offset);
|
|
|
22 |
$array = array_merge($temp, $array);
|
|
|
23 |
}
|
|
|
24 |
}
|
|
|
25 |
else { $array = array($value); }
|
|
|
26 |
return count($array);
|
|
|
27 |
}
|
|
|
28 |
|
|
|
29 |
function urlencode_part($url) { // mPDF 5.6.02
|
|
|
30 |
if (!preg_match('/^[a-z]+:\/\//i',$url)) { return $url; }
|
|
|
31 |
$file=$url;
|
|
|
32 |
$query='';
|
|
|
33 |
if (preg_match('/[?]/',$url)) {
|
|
|
34 |
$bits = preg_split('/[?]/',$url,2);
|
|
|
35 |
$file=$bits[0];
|
|
|
36 |
$query='?'.$bits[1];
|
|
|
37 |
}
|
|
|
38 |
$file = str_replace(array(" ","!","$","&","'","(",")","*","+",",",";","="),array("%20","%21","%24","%26","%27","%28","%29","%2A","%2B","%2C","%3B","%3D"),$file);
|
|
|
39 |
return $file.$query;
|
|
|
40 |
}
|
|
|
41 |
|
|
|
42 |
|
|
|
43 |
function _strspn($str1, $str2, $start=null, $length=null) {
|
|
|
44 |
$numargs = func_num_args();
|
|
|
45 |
if ($numargs == 2) {
|
|
|
46 |
return strspn($str1, $str2);
|
|
|
47 |
}
|
|
|
48 |
else if ($numargs == 3) {
|
|
|
49 |
return strspn($str1, $str2, $start);
|
|
|
50 |
}
|
|
|
51 |
else {
|
|
|
52 |
return strspn($str1, $str2, $start, $length);
|
|
|
53 |
}
|
|
|
54 |
}
|
|
|
55 |
|
|
|
56 |
|
|
|
57 |
function _strcspn($str1, $str2, $start=null, $length=null) {
|
|
|
58 |
$numargs = func_num_args();
|
|
|
59 |
if ($numargs == 2) {
|
|
|
60 |
return strcspn($str1, $str2);
|
|
|
61 |
}
|
|
|
62 |
else if ($numargs == 3) {
|
|
|
63 |
return strcspn($str1, $str2, $start);
|
|
|
64 |
}
|
|
|
65 |
else {
|
|
|
66 |
return strcspn($str1, $str2, $start, $length);
|
|
|
67 |
}
|
|
|
68 |
}
|
|
|
69 |
|
|
|
70 |
function _fgets (&$h, $force=false) {
|
|
|
71 |
$startpos = ftell($h);
|
|
|
72 |
$s = fgets($h, 1024);
|
|
|
73 |
if ($force && preg_match("/^([^\r\n]*[\r\n]{1,2})(.)/",trim($s), $ns)) {
|
|
|
74 |
$s = $ns[1];
|
|
|
75 |
fseek($h,$startpos+strlen($s));
|
|
|
76 |
}
|
|
|
77 |
return $s;
|
|
|
78 |
}
|
|
|
79 |
|
|
|
80 |
|
|
|
81 |
// For PHP4 compatability
|
|
|
82 |
if(!function_exists('str_ireplace')) {
|
|
|
83 |
function str_ireplace($search,$replace,$subject) {
|
|
|
84 |
$search = preg_quote($search, "/");
|
|
|
85 |
return preg_replace("/".$search."/i", $replace, $subject);
|
|
|
86 |
}
|
|
|
87 |
}
|
|
|
88 |
if(!function_exists('htmlspecialchars_decode')) {
|
|
|
89 |
function htmlspecialchars_decode ($str) {
|
|
|
90 |
return strtr($str, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
|
|
|
91 |
}
|
|
|
92 |
}
|
|
|
93 |
|
|
|
94 |
function PreparePreText($text,$ff='//FF//') {
|
|
|
95 |
$text = htmlspecialchars($text);
|
|
|
96 |
if ($ff) { $text = str_replace($ff,'</pre><formfeed /><pre>',$text); }
|
|
|
97 |
return ('<pre>'.$text.'</pre>');
|
|
|
98 |
}
|
|
|
99 |
|
|
|
100 |
if(!function_exists('strcode2utf')){
|
|
|
101 |
function strcode2utf($str,$lo=true) {
|
|
|
102 |
//converts all the &#nnn; and &#xhhh; in a string to Unicode
|
|
|
103 |
// mPDF 5.7
|
|
|
104 |
if ($lo) {
|
|
|
105 |
$str = preg_replace_callback('/\&\#([0-9]+)\;/m', 'code2utf_lo_callback', $str);
|
|
|
106 |
$str = preg_replace_callback('/\&\#x([0-9a-fA-F]+)\;/m', 'codeHex2utf_lo_callback', $str);
|
|
|
107 |
}
|
|
|
108 |
else {
|
|
|
109 |
$str = preg_replace_callback('/\&\#([0-9]+)\;/m', 'code2utf_callback', $str);
|
|
|
110 |
$str = preg_replace_callback('/\&\#x([0-9a-fA-F]+)\;/m', 'codeHex2utf_callback', $str);
|
|
|
111 |
}
|
|
|
112 |
return $str;
|
|
|
113 |
}
|
|
|
114 |
}
|
|
|
115 |
function code2utf_callback($matches) {
|
|
|
116 |
return code2utf($matches[1], 0);
|
|
|
117 |
}
|
|
|
118 |
function code2utf_lo_callback($matches) {
|
|
|
119 |
return code2utf($matches[1], 1);
|
|
|
120 |
}
|
|
|
121 |
function codeHex2utf_callback($matches) {
|
|
|
122 |
return codeHex2utf($matches[1], 0);
|
|
|
123 |
}
|
|
|
124 |
function codeHex2utf_lo_callback($matches) {
|
|
|
125 |
return codeHex2utf($matches[1], 1);
|
|
|
126 |
}
|
|
|
127 |
|
|
|
128 |
if(!function_exists('code2utf')){
|
|
|
129 |
function code2utf($num,$lo=true){
|
|
|
130 |
//Returns the utf string corresponding to the unicode value
|
|
|
131 |
if ($num<128) {
|
|
|
132 |
if ($lo) return chr($num);
|
|
|
133 |
else return '&#'.$num.';';
|
|
|
134 |
}
|
|
|
135 |
if ($num<2048) return chr(($num>>6)+192).chr(($num&63)+128);
|
|
|
136 |
if ($num<65536) return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
|
|
|
137 |
if ($num<2097152) return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128);
|
|
|
138 |
return '?';
|
|
|
139 |
}
|
|
|
140 |
}
|
|
|
141 |
|
|
|
142 |
|
|
|
143 |
if(!function_exists('codeHex2utf')){
|
|
|
144 |
function codeHex2utf($hex,$lo=true){
|
|
|
145 |
$num = hexdec($hex);
|
|
|
146 |
if (($num<128) && !$lo) return '&#x'.$hex.';';
|
|
|
147 |
return code2utf($num,$lo);
|
|
|
148 |
}
|
|
|
149 |
}
|
|
|
150 |
|
|
|
151 |
|
|
|
152 |
?>
|