Skip to content

wordpress中的函数

2008 十二月 23
by 荒野无灯
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
 /**
  * 检查是否是一个序列化数据.
  *
  * If $data is not an string, then returned value will always be false.
  * Serialized data is always a string.
  *
  * @since 2.0.5
  *
  * @param mixed $data Value to check to see if was serialized.
  * @return bool False if not serialized and true if it was.
  */
 
 function is_serialized( $data ) {  
     // if it isn't a string, it isn't serialized  
     if ( !is_string( $data ) )  
         return false;  
     $data = trim( $data );  
     if ( 'N;' == $data )  
         return true;  
     if ( !preg_match( '/^([adObis]):/', $data, $badions ) )  
         return false;  
     switch ( $badions[1] ) {  
         case 'a' :  
         case 'O' :  
         case 's' :  
             if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) )  
                 return true;  
             break;  
         case 'b' :  
         case 'i' :  
         case 'd' :  
             if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) )  
                 return true;  
             break;  
     }  
     return false;  
 }  
   
 /**
  * 检查是否是一个字符串序列化数据
  *
  * @since 2.0.5
  *
  * @param mixed $data Serialized data
  * @return bool False if not a serialized string, true if it is.
  */
 
 function is_serialized_string( $data ) {  
     // if it isn't a string, it isn't a serialized string  
     if ( !is_string( $data ) )  
         return false;  
     $data = trim( $data );  
     if ( preg_match( '/^s:[0-9]+:.*;$/s', $data ) ) // this should fetch all serialized strings  
         return true;  
     return false;  
 }  
   
 /**
  * http状态转换成说明
  *
  * @since 2.3.0
  *
  * @param int $code HTTP status code.
  * @return string Empty string if not found, or description if found.
  */
 
 function get_status_header_desc( $code ) {  
     global $wp_header_to_desc;  
   
     $code = absint( $code );  
   
     if ( !isset( $wp_header_to_desc ) ) {  
         $wp_header_to_desc = array(  
             100 => 'Continue',  
             101 => 'Switching Protocols',  
   
             200 => 'OK',  
             201 => 'Created',  
             202 => 'Accepted',  
             203 => 'Non-Authoritative Information',  
             204 => 'No Content',  
             205 => 'Reset Content',  
             206 => 'Partial Content',  
   
             300 => 'Multiple Choices',  
             301 => 'Moved Permanently',  
             302 => 'Found',  
             303 => 'See Other',  
             304 => 'Not Modified',  
             305 => 'Use Proxy',  
             307 => 'Temporary Redirect',  
   
             400 => 'Bad Request',  
             401 => 'Unauthorized',  
             403 => 'Forbidden',  
             404 => 'Not Found',  
             405 => 'Method Not Allowed',  
             406 => 'Not Acceptable',  
             407 => 'Proxy Authentication Required',  
             408 => 'Request Timeout',  
             409 => 'Conflict',  
             410 => 'Gone',  
             411 => 'Length Required',  
             412 => 'Precondition Failed',  
             413 => 'Request Entity Too Large',  
             414 => 'Request-URI Too Long',  
             415 => 'Unsupported Media Type',  
             416 => 'Requested Range Not Satisfiable',  
             417 => 'Expectation Failed',  
   
             500 => 'Internal Server Error',  
             501 => 'Not Implemented',  
             502 => 'Bad Gateway',  
             503 => 'Service Unavailable',  
             504 => 'Gateway Timeout',  
             505 => 'HTTP Version Not Supported'  
         );  
     }  
   
     if ( isset( $wp_header_to_desc[$code] ) )  
         return $wp_header_to_desc[$code];  
     else  
         return '';  
 }  
   
 /**
  * 发送一个让页面不缓存的http头信息
  *
  * Different browsers support different nocache headers, so several headers must
  * be sent so that all of them get the point that no caching should occur.
  *
  * @since 2.0.0
  */
 
 function nocache_headers() {  
     // why are these @-silenced when other header calls aren't?  
     @header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' );  
     @header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );  
     @header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );  
     @header( 'Pragma: no-cache' );  
 }  
   
 /**
  * 让javascript缓存10天的http头信息
  *
  * @since 2.1.0
  */
 
 function cache_javascript_headers() {  
     $expiresOffset = 864000; // 10 days  
     header( "Content-Type: text/javascript; charset=" . get_bloginfo( 'charset' ) );  
     header( "Vary: Accept-Encoding" ); // Handle proxies  
     header( "Expires: " . gmdate( "D, d M Y H:i:s", time() + $expiresOffset ) . " GMT" );  
 }  
   
 /**
  * 递归创建一个完整的目录(整个目录中的子目录不存在都创建)
  *
  * Will attempt to set permissions on folders.
  *
  * @since 2.0.1
  *
  * @param string $target Full path to attempt to create.
  * @return bool Whether the path was created or not. True if path already exists.
  */
 
 function wp_mkdir_p( $target ) {  
     // from php.net/mkdir user contributed notes  
     $target = str_replace( '//', '/', $target );  
     if ( file_exists( $target ) )  
         return @is_dir( $target );  
   
     // Attempting to create the directory may clutter up our display.  
     if ( @mkdir( $target ) ) {  
         $stat = @stat( dirname( $target ) );  
         $dir_perms = $stat['mode'] & 0007777;  // Get the permission bits.  
         @chmod( $target, $dir_perms );  
         return true;  
     } elseif ( is_dir( dirname( $target ) ) ) {  
             return false;  
     }  
   
     // If the above failed, attempt to create the parent node, then try again.  
     if ( ( $target != '/' ) && ( wp_mkdir_p( dirname( $target ) ) ) )  
         return wp_mkdir_p( $target );  
   
     return false;  
 }  
   
 /**
  * 检查是否是个绝对路径 ('/foo/bar', 'c:\windows').
  *
  * @since 2.5.0
  *
  * @param string $path File path
  * @return bool True if path is absolute, false is not absolute.
  */
 
 function path_is_absolute( $path ) {  
     // this is definitive if true but fails if $path does not exist or contains a symbolic link  
     if ( realpath($path) == $path )  
         return true;  
   
     if ( strlen($path) == 0 || $path{0} == '.' )  
         return false;  
   
     // windows allows absolute paths like this  
     if ( preg_match('#^[a-zA-Z]:\\\\#', $path) )  
         return true;  
   
     // a path starting with / or \ is absolute; anything else is relative  
     return (bool) preg_match('#^[/\\\\]#', $path);  
 }  
   
 /**
  * 根据扩展名获得文件类型
  *
  * @package WordPress
  * @since 2.5.0
  * @uses apply_filters() Calls 'ext2type' hook on default supported types.
  *
  * @param string $ext The extension to search.
  * @return string|null The file type, example: audio, video, document, spreadsheet, etc. Null if not found.
  */
 
 function wp_ext2type( $ext ) {  
     $ext2type = apply_filters('ext2type', array(  
         'audio' => array('aac','ac3','aif','aiff','mp1','mp2','mp3','m3a','m4a','m4b','ogg','ram','wav','wma'),  
         'video' => array('asf','avi','divx','dv','mov','mpg','mpeg','mp4','mpv','ogm','qt','rm','vob','wmv'),  
         'document' => array('doc','docx','pages','odt','rtf','pdf'),  
         'spreadsheet' => array('xls','xlsx','numbers','ods'),  
         'interactive' => array('ppt','pptx','key','odp','swf'),  
         'text' => array('txt'),  
         'archive' => array('tar','bz2','gz','cab','dmg','rar','sea','sit','sqx','zip'),  
         'code' => array('css','html','php','js'),  
     ));  
     foreach ( $ext2type as $type => $exts )  
         if ( in_array($ext, $exts) )  
             return $type;  
 }  
   
 /**
  * 转换成正整数
  *
  * @since 2.5.0
  *
  * @param mixed $maybeint Data you wish to have convered to an absolute integer
  * @return int An absolute integer
  */
 
 function absint( $maybeint ) {  
     return abs( intval( $maybeint ) );  
 }

喜欢这篇文章吗?

请订阅本站 RSS feed填写您的邮件地址,订阅我们的精彩内容:,欢迎点击这里捐赠以支持荒野无灯转播到腾讯微博 转播到腾讯微博

作者:荒野无灯
出处:Hacklog【Hacklog】

声明: 本站遵循 署名-非商业性使用-相同方式共享 3.0 共享协议. 转载请注明转自Hacklog【荒野无灯weblog】

本文链接: http://ihacklog.com/?p=724

Leave a Reply

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <q cite=""> <strong>

 :wink:  :-|  :-x  :twisted:  :)  8-O  :(  :roll:  :-P  :oops:  :-o  :mrgreen:  :lol:  :idea:  :-D  :evil:  :cry:  8)  :arrow:  :-?  :?:  :!:

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS