• 使用wordpress中的函数
    时间:2009-01-11   作者:佚名   出处:互联网

    这里我们来提取一些可以利用的wordpress函数:

       1. is_serialized 检查是否是一个序列化数据
       2. is_serialized_string 检查是否是一个字符串序列化数据
       3. get_status_header_desc http状态转换成说明
       4. nocache_headers 发送一个让页面不缓存的http头信息
       5. cache_javascript_headers 让javascript缓存10天的http头信息
       6. wp_mkdir_p 递归创建一个完整的目录(整个目录中的子目录不存在都创建)
       7. path_is_absolute 检查是否是个绝对路径 (’/foo/bar’, ‘c:\windows’).
       8. wp_ext2type 根据扩展名获得文件类型
       9. absint 转换成正整数

    函数文件在wp程序目录的wp-includes/functions.php

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

    网友留言/评论

    我要留言/评论