整理了php过滤字符串几个例子

 更新时间:2016年11月25日 15:37  点击:2099
php中过滤一些特殊字符我们通常用于在安全数据提交或者敏感词的过滤上,下面整理了一些常用的例子供大家参考,有需要了可进入参考。

例子

我们利用preg_replace与str_ireplace来进行替换操作

 代码如下 复制代码

public static function filterStr( $value )
{
if ( empty( $value ) )
{
return "";
}
$value = trim( $value );
$badstr = array( "x00", "%00", "r", "&", """, "'", "<", ">", "%3C", "%3E" );
$newstr = array( "", "", "", "&amp;", "&quot;", "&#39;", "&lt;", "&gt;", "&lt;", "&gt;" );
$value = str_ireplace( $badstr, $newstr, $value );
$value = preg_replace( "/&amp;((#(d{3,5}|x[a-fA-F0-9]{4}));)/", "&1", $value );
return $value;
}
public static function stripArray( &$_data )
{
if ( is_array( $_data ) )
{
foreach ( $_data as $_key => $_value )
{
$_data[$_key] = trim( self::striparray( $_value ) );
}
return $_data;
}
return stripslashes( trim( $_data ) );
}

另收藏:

 代码如下 复制代码

<?php
class XRequest
{
 
public static function getPost( $name = "" )
{
if ( empty( $name ) )
{
return $_POST;
}
if ( isset( $_POST[$name] ) )
{
return $_POST[$name];
}
return "";
}
 
public static function getGet( $name = "" )
{
if ( empty( $name ) )
{
return $_GET;
}
if ( isset( $_GET[$name] ) )
{
return $_GET[$name];
}
return "";
}
 
public static function getCookie( $name = "" )
{
if ( $name == "" )
{
return $_COOKIE;
}
if ( isset( $_COOKIE[$name] ) )
{
return $_COOKIE[$name];
}
return "";
}
 
public static function getSession( $name = "" )
{
if ( $name == "" )
{
return $_SESSION;
}
if ( isset( $_SESSION[$name] ) )
{
return $_SESSION[$name];
}
return "";
}
 
public static function fetchEnv( $name = "" )
{
if ( $name == "" )
{
return $_ENV;
}
if ( isset( $_ENV[$name] ) )
{
return $_ENV[$name];
}
return "";
}
 
public static function getService( $name = "" )
{
if ( $name == "" )
{
return $_SERVER;
}
if ( isset( $_SERVER[$name] ) )
{
return $_SERVER[$name];
}
return "";
}
 
public static function getPhpSelf( )
{
return strip_tags( self::getservice( "PHP_SELF" ) );
}
 
public static function getServiceName( )
{
return self::getservice( "SERVER_NAME" );
}
 
public static function getRequestTime( )
{
return self::getservice( "REQUEST_TIME" );
}
 
public static function getUserAgent( )
{
return self::getservice( "HTTP_USER_AGENT" );
}
 
public static function getUri( )
{
return self::getservice( "REQUEST_URI" );
}
 
public static function isPost( )
{
if ( strtolower( self::getservice( "REQUEST_METHOD" ) ) == "post" )
{
return TRUE;
}
return FALSE;
}
 
public static function isGet( )
{
if ( strtolower( self::getservice( "REQUEST_METHOD" ) ) == "get" )
{
return TRUE;
}
return FALSE;
}
 
public static function isAjax( )
{
if ( self::getservice( "HTTP_X_REQUESTED_WITH" ) && strtolower( self::getservice( "HTTP_X_REQUESTED_WITH" ) ) == "xmlhttprequest" )
{
return TRUE;
}
if ( self::getservice( "HTTP_REQUEST_TYPE" ) && strtolower( self::getservice( "HTTP_REQUEST_TYPE" ) ) == "ajax" )
{
return TRUE;
}
if ( self::getpost( "oe_ajax" ) || self::getget( "oe_ajax" ) )
{
return TRUE;
}
return FALSE;
}
 
public static function getip( )
{
static $realip = NULL;
if ( isset( $_SERVER ) )
{
if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) )
{
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else if ( isset( $_SERVER['HTTP_CLIENT_IP'] ) )
{
$realip = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
$realip = $_SERVER['REMOTE_ADDR'];
}
}
else if ( getenv( "HTTP_X_FORWARDED_FOR" ) )
{
$realip = getenv( "HTTP_X_FORWARDED_FOR" );
}
else if ( getenv( "HTTP_CLIENT_IP" ) )
{
$realip = getenv( "HTTP_CLIENT_IP" );
}
else
{
$realip = getenv( "REMOTE_ADDR" );
}
$one = "([0-9]|[0-9]{2}|1dd|2[0-4]d|25[0-5])";
if ( !@preg_match( "/".$one.".".$one.".".$one.".".$one."$/", $realip ) )
{
$realip = "0.0.0.0";
}
return $realip;
}
 
protected static function uri( )
{
$uri = self::geturi( );
$file = dirname( $_SERVER['SCRIPT_NAME'] );
$request = str_replace( $file, "", $uri );
$request = explode( "/", trim( $request, "/" ) );
if ( isset( $request[0] ) )
{
$GLOBALS['_GET']['c'] = $request[0];
unset( $request[0] );
}
if ( isset( $request[1] ) )
{
$GLOBALS['_GET']['a'] = $request[1];
unset( $request[1] );
}
if ( 1 < count( $request ) )
{
$mark = 0;
$val = $key = array( );
foreach ( $request as $value )
{
++$mark;
if ( $mark % 2 == 0 )
{
$val[] = $value;
}
else
{
$key[] = $value;
}
}
if ( count( $key ) !== count( $val ) )
{
$val[] = NULL;
}
$get = array_combine( $key, $val );
foreach ( $get as $key => $value )
{
$GLOBALS['_GET'][$key] = $value;
}
}
return TRUE;
}
 
public static function getGpc( $value, $isfliter = TRUE )
{
if ( !is_array( $value ) )
{
if ( isset( $_GET[$value] ) )
{
$temp = trim( $_GET[$value] );
}
if ( isset( $_POST[$value] ) )
{
$temp = trim( $_POST[$value] );
}
$temp = $isfliter === TRUE ? XFilter::filterstr( $temp ) : $temp;
return trim( $temp );
}
$temp = array( );
foreach ( $value as $val )
{
if ( isset( $_GET[$val] ) )
{
$temp[$val] = trim( $_GET[$val] );
}
if ( isset( $_POST[$val] ) )
{
$temp[$val] = trim( $_POST[$val] );
}
$temp[$val] = $isfliter === TRUE ? XFilter::filterstr( $temp[$val] ) : $temp[$val];
}
return $temp;
}
 
public static function getArgs( $value, $default = NULL, $isfliter = TRUE )
{
if ( !empty( $value ) )
{
if ( isset( $_GET[$value] ) )
{
$temp = trim( $_GET[$value] );
}
if ( isset( $_POST[$value] ) )
{
$temp = trim( $_POST[$value] );
}
if ( $isfliter )
{
$temp = XFilter::filterstr( $temp );
}
else
{
$temp = XFilter::striparray( $temp );
}
if ( empty( $temp ) && !empty( $default ) )
{
$temp = $default;
}
return trim( $temp );
}
return "";
}
 
public static function getInt( $value, $default = NULL )
{
if ( !empty( $value ) )
{
if ( isset( $_GET[$value] ) )
{
$temp = $_GET[$value];
}
if ( isset( $_POST[$value] ) )
{
$temp = $_POST[$value];
}
$temp = XFilter::filterstr( $temp );
if ( empty( $temp ) || FALSE === XValid::isnumber( $temp ) )
{
if ( TRUE === XValid::isnumber( $default ) )
{
$temp = $default;
}
else
{
$temp = 0;
}
}
return intval( $temp );
}
return 0;
}
 
public static function getArray( $value )
{
if ( !empty( $value ) )
{
if ( isset( $_GET[$value] ) )
{
$temp = $_GET[$value];
}
if ( isset( $_POST[$value] ) )
{
$temp = $_POST[$value];
}
return $temp;
}
return "";
}
 
public static function recArgs( $value )
{
if ( !empty( $value ) )
{
if ( isset( $_GET[$value] ) )
{
$temp = $_GET[$value];
}
if ( isset( $_POST[$value] ) )
{
$temp = $_POST[$value];
}
return XFilter::filterbadchar( $temp );
}
return "";
}
 
public static function getComArgs( $itemname )
{
$args = "";
$array = self::getarray( $itemname );
if ( !empty( $array ) )
{
$ii = 0;
for ( ; $ii < count( $array );   ++$ii   )
{
$val = XFilter::filterbadchar( $array[$ii] );
if ( !empty( $val ) )
{
if ( $ii == 0 )
{
$args = $val;
}
else if ( $args == "" )
{
$args = $val;
}
else
{
$args = $args.",".$val;
}
}
}
}
return $args;
}
 
public static function getComInts( $name )
{
$args = "";
$array = self::getarray( $name );
if ( !empty( $array ) )
{
$ii = 0;
for ( ; $ii < count( $array );   ++$ii   )
{
$val = intval( XFilter::filterbadchar( $array[$ii] ) );
if ( !empty( $val ) )
{
if ( $ii == 0 )
{
$args = $val;
}
else if ( $args == "" )
{
$args = $val;
}
else
{
$args = $args.",".$val;
}
}
}
}
return $args;
}
 
}
 
if ( !defined( "IN_OESOFT" ) )
{
exit( "Access Denied" );
}
?>
<?php
class XFilter
{
 
public static function filterBadChar( $str )
{
if ( empty( $str ) || $str == "" )
{
return;
}
$badstring = array( "'", """, """, "=", "#", "$", ">", "<", "", "/*", "%", "x00", "%00", "*" );
$newstring = array( "", "", "", "", "", "", "", "", "", "", "", "", "", "" );
$str = str_replace( $badstring, $newstring, $str );
return trim( $str );
}
 
public static function stripArray( &$_data )
{
if ( is_array( $_data ) )
{
foreach ( $_data as $_key => $_value )
{
$_data[$_key] = trim( self::striparray( $_value ) );
}
return $_data;
}
return stripslashes( trim( $_data ) );
}
 
public static function filterSlashes( &$value )
{
if ( get_magic_quotes_gpc( ) )
{
return FALSE;
}
$value = ( array )$value;
foreach ( $value as $key => $val )
{
if ( is_array( $val ) )
{
self::filterslashes( $value[$key] );
}
else
{
$value[$key] = addslashes( $val );
}
}
}
 
public static function filterScript( $value )
{
if ( empty( $value ) )
{
return "";
}
$value = preg_replace( "/(javascript:)?on(click|load|key|mouse|error|abort|move|unload|change|dblclick|move|reset|resize|submit)/i", "&111n2", $value );
$value = preg_replace( "/<script(.*?)>(.*?)</script>/si", "", $value );
$value = preg_replace( "/<iframe(.*?)>(.*?)</iframe>/si", "", $value );
$value = preg_replace( "/<object.+</object>/iesU", "", $value );
return $value;
}
 
public static function filterHtml( $value )
{
if ( empty( $value ) )
{
return "";
}
if ( function_exists( "htmlspecialchars" ) )
{
return htmlspecialchars( $value );
}
return str_replace( array( "&", """, "'", "<", ">" ), array( "&amp;", "&quot;", "&#039;", "&lt;", "&gt;" ), $value );
}
 
public static function filterSql( $value )
{
if ( empty( $value ) )
{
return "";
}
$sql = array( "select", "insert", "update", "delete", "'", "/*", "../", "./", "union", "into", "load_file", "outfile" );
$sql_re = array( "", "", "", "", "", "", "", "", "", "", "", "" );
return str_ireplace( $sql, $sql_re, $value );
}
 
public static function filterStr( $value )
{
if ( empty( $value ) )
{
return "";
}
$value = trim( $value );
$badstr = array( "x00", "%00", "r", "&", """, "'", "<", ">", "%3C", "%3E" );
$newstr = array( "", "", "", "&amp;", "&quot;", "&#39;", "&lt;", "&gt;", "&lt;", "&gt;" );
$value = str_ireplace( $badstr, $newstr, $value );
$value = preg_replace( "/&amp;((#(d{3,5}|x[a-fA-F0-9]{4}));)/", "&1", $value );
return $value;
}
 
public static function filterUrl( )
{
if ( preg_replace( "/https?://([^:/]+).*/i", "1", $_SERVER['HTTP_REFERER'] ) !== preg_replace( "/([^:]+).*/", "1", $_SERVER['HTTP_HOST'] ) )
{
return FALSE;
}
return TRUE;
}
 
public static function filterForbidChar( $content )
{
$new_content = $content;
$forbidargs = X::$cfg['forbidargs'];
if ( !empty( $forbidargs ) )
{
$array = explode( ",", $forbidargs );
$i = 0;
for ( ; $i < sizeof( $array );   ++$i    )
{
$new_content = str_ireplace( $array[$i], "", $content );
}
}
return $new_content;
}
 
public static function checkExistsForbidChar( $content )
{
$flag = FALSE;
$forbidargs = X::$cfg['forbidargs'];
if ( !empty( $forbidargs ) )
{
$array = explode( ",", $forbidargs );
$i = 0;
for ( ; $i < sizeof( $array );   ++$i    )
{
if ( FALSE === strpos( strtolower( $content ), strtolower( $array[$i] ) ) )
{
continue;
}
$flag = TRUE;
break;
}
}
return $flag;
}
 
public static function checkExistsForbidUserName( $username )
{
$flag = FALSE;
$forbidargs = X::$cfg['lockusers'];
if ( !empty( $forbidargs ) )
{
$array = explode( ",", $forbidargs );
$i = 0;
for ( ; $i < sizeof( $array );   ++$i    )
{
if ( FALSE === strpos( strtolower( $username ), strtolower( $array[$i] ) ) )
{
continue;
}
$flag = TRUE;
break;
}
}
return $flag;
}
 
}
 
if ( !defined( "IN_OESOFT" ) )
{
exit( "Access Denied" );
}
?>

在php中我们要得到网站根目录可以用很多全局变量实现了,如可以利用__file__或DOCUMENT_ROOT等等变量来取得,下面一起看看几个例子。

__file__

dirname(__file__) //获取到的是这个软连接本身的绝对目录

如果想要在软连接的可执行php文件中获取网站的根目录的方法是:

$dir = $_SERVER['DOCUMENT_ROOT'] ; //#获取当前运行脚本所在的文档根目录。

php获取网站根目录方法一:

<?php
define("WWWROOT",str_ireplace(str_replace("/","\\",$_SERVER['PHP_SELF']),'',__FILE__)."\\");
echo WWWROOT ;
?>

php获取网站根目录方法二:

<?php
define('WWW_PATH',str_replace('\\','/',realpath(dirname(__FILE__).'/../')));  //定义站点目录
?>

php获取网站根目录方法三:

$_SERVER['DOCUMENT_ROOT'] //当前运行脚本所在的文档根目录。在服务器配置文件中定义

其它的获取目录的方法:

$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。
$_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。

在php中实现多线程对于很多朋友来讲都觉得不中java做得到位了,这个也确实是如何了,下面我们一起来看看php多线程的几个例子。

PHP中有没有办法在实现多线程呢?假设你正在写一个基于多台服务器的PHP应用,理想的情况时同时向多台服务器发送请求,而不是一台接一台。可以实现吗?当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现PHP不支持多线程的时候,大概会转换思路去用一些不够好的语言,比如Perl。

其实的是大多数情况下,你大可不必使用fork或者线程,并且你会得到比用fork或thread更好的性能。假设你要建立一个服务来检查正在运行的n台服务器,以确定他们还在正常运转。你可能会写下面这样的代码:

 代码如下 复制代码
$hosts = array("host1.sample.com", "host2.sample.com", "host3.sample.com");
$timeout = 15; 
$status = array(); 
foreach ($hosts as $host) {  
$errno = 0;  
$errstr = "";  
$s = fsockopen($host, 80, $errno, $errstr, $timeout);  
if ($s) {   
     $status[$host] = "Connectedn";   
     fwrite($s, "HEAD / HTTP/1.0rnHost: $hostrnrn");   
    do {    
$data = fread($s, 8192);    
if (strlen($data) == 0) {    
break;    
}    
     $status[$host] .= $data;   
 }  
 while (true);   
    fclose($s);  
  }  
 else {   
      $status[$host] = "Connection failed: $errno $errstrn";  
 } 

print_r($status); 

它运行的很好,但是在fsockopen()分析完hostname并且建立一个成功的连接(或者延时$timeout秒)之前,扩充这段代码来管理大量服务器将耗费很长时间。

因此我们必须放弃这段代码;我们可以建立异步连接-不需要等待fsockopen返回连接状态。PHP仍然需要解析hostname(所以直接使用ip更加明智),不过将在打开一个连接之后立刻返回,继而我们就可以连接下一台服务器。

有两种方法可以实现;PHP5中可以使用新增的stream_socket_client()函数直接替换掉fsocketopen()。PHP5之前的版本,你需要自己动手,用sockets扩展解决问题。下面是PHP5中的解决方法:

 代码如下 复制代码
$timeout = 15; 
$status = array(); 
$sockets = array(); 
/* Initiate connections to all the hosts simultaneously */ 
foreach ($hosts as $id => $host) {  
$s = stream_socket_client("$host:80", $errno, $errstr, $timeout,   
     STREAM_CLIENT_ASYNC_CONNECT|STREAM_CLIENT_CONNECT);  
if ($s) {   
    $sockets[$id] = $s;   
    $status[$id] = "in progress";  
}  
else {  $status[$id] = "failed, $errno $errstr";  


/* Now, wait for the results to come back in */ 
 
while (count($sockets)) {  
      $read = $write = $sockets;  
/* This is the magic function - explained below */  
      $n = stream_select($read, $write, $e = null, $timeout);  
      if ($n > 0) {   
      /* readable sockets either have data for us, or are failed   * connection attempts */   
  foreach ($read as $r) {
   $id = array_search($r, $sockets);
   $data = fread($r, 8192);
  if (strlen($data) == 0) {    
   if ($status[$id] == "in progress") {     
       $status[$id] = "failed to connect";    
   }    
  fclose($r);    
  unset($sockets[$id]);
   }  
   else {    
 $status[$id] .= $data;
   }   
}   
/* writeable sockets can accept an HTTP request */   
foreach ($write as $w) {    
 $id = array_search($w, $sockets);    
 fwrite($w, "HEAD / HTTP/1.0rnHost: "     
 . $hosts[$id] .  "rnrn");    
 $status[$id] = "waiting for response";   
 }  
}  
else {   
/* timed out waiting; assume that all hosts associated   * with $sockets are faulty */   
foreach ($sockets as $id => $s) {    
 $status[$id] = "timed out "  
 . $status[$id];   
 }   
break;  
  } 

foreach ($hosts as $id => $host) {  
      echo "Host: $hostn"; echo "Status: "  
      . $status[$id] . "nn"; 
}  

我们用stream_select()等待sockets打开的连接事件。stream_select()调用系统的select(2)函数来工 作:前面三个参数是你要使用的streams的数组;你可以对其读取,写入和获取异常(分别针对三个参数)。stream_select()可以通过设 置$timeout(秒)参数来等待事件发生-事件发生时,相应的sockets数据将写入你传入的参数。

下面是PHP4.1.0之后版本的实现,如果你已经在编译PHP时包含了sockets(ext/sockets)支持,你可以使用根上面类似的代 码,只是需要将上面的streams/filesystem函数的功能用ext/sockets函数实现。主要的不同在于我们用下面的函数代替 stream_socket_client()来建立连接:

 代码如下 复制代码

define('EINPROGRESS', 115); 
function non_blocking_connect($host, $port, &$errno, &$errstr, $timeout) {  
$ip = gethostbyname($host);  
$s = socket_create(AF_INET, SOCK_STREAM, 0);  
if (socket_set_nonblock($s)) {   
   $r = @socket_connect($s, $ip, $port);   
   if ($r || socket_last_error() == EINPROGRESS) {    
  $errno = EINPROGRESS;    
  return $s;   
       }  
 }  
$errno = socket_last_error($s);  
$errstr = socket_strerror($errno);  
socket_close($s);  
return false; 

现在用socket_select()替换掉stream_select(),用socket_read()替换掉fread(),用socket_write()替换掉fwrite(),用socket_close()替换掉fclose()就可以执行脚本了! PHP5的先进之处在于,你可以用stream_select()处理几乎所有的stream。例如你可以通过include STDIN用它接收键盘输入并保存进数组,你还可以接收通过proc_open()打开的管道中的数据。

我们在开发中经常会要用到一些功能,下文小编整理了在开发应用中碰到的一些php经典代码了,下面一起来看看。

一、黑名单过滤

 代码如下 复制代码

function is_spam($text, $file, $split = ':', $regex = false){
    $handle = fopen($file, 'rb');
    $contents = fread($handle, filesize($file));
    fclose($handle);
    $lines = explode("n", $contents);
    $arr = array();
    foreach($lines as $line){
        list($word, $count) = explode($split, $line);
        if($regex)
            $arr[$word] = $count;
        else
            $arr[preg_quote($word)] = $count;
    }
    preg_match_all("~".implode('|', array_keys($arr))."~", $text, $matches);
    $temp = array();
    foreach($matches[0] as $match){
        if(!in_array($match, $temp)){
            $temp[$match] = $temp[$match] + 1;
            if($temp[$match] >= $arr[$word])
                return true;
        }
    }
    return false;
}

$file = 'spam.txt';
$str = 'This string has cat, dog word';
if(is_spam($str, $file))
    echo 'this is spam';
else
    echo 'this is not spam';
ab:3
dog:3
cat:2
monkey:2

二、随机颜色生成器

 代码如下 复制代码
function randomColor() {
    $str = '#';
    for($i = 0 ; $i < 6 ; $i++) {
        $randNum = rand(0 , 15);
        switch ($randNum) {
            case 10: $randNum = 'A'; break;
            case 11: $randNum = 'B'; break;
            case 12: $randNum = 'C'; break;
            case 13: $randNum = 'D'; break;
            case 14: $randNum = 'E'; break;
            case 15: $randNum = 'F'; break;
        }
        $str .= $randNum;
    }
    return $str;
}
$color = randomColor();

三、从网上下载文件

 代码如下 复制代码

set_time_limit(0);
// Supports all file types
// URL Here:
$url = 'http://somsite.com/some_video.flv';
$pi = pathinfo($url);
$ext = $pi['extension'];
$name = $pi['filename'];

// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// grab URL and pass it to the browser
$opt = curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);

$saveFile = $name.'.'.$ext;
if(preg_match("/[^0-9a-z._-]/i", $saveFile))
    $saveFile = md5(microtime(true)).'.'.$ext;

$handle = fopen($saveFile, 'wb');
fwrite($handle, $opt);
fclose($handle);

四、Alexa/Google Page Rank

 代码如下 复制代码
function page_rank($page, $type = 'alexa'){
    switch($type){
        case 'alexa':
            $url = 'http://alexa.com/siteinfo/';
            $handle = fopen($url.$page, 'r');
        break;
        case 'google':
            $url = 'http://google.com/search?client=navclient-auto&ch=6-1484155081&features=Rank&q=info:';
            $handle = fopen($url.'http://'.$page, 'r');
        break;
    }
    $content = stream_get_contents($handle);
    fclose($handle);
    $content = preg_replace("~(n|t|ss+)~",'', $content);
    switch($type){
        case 'alexa':
            if(preg_match('~<div class="data (down|up)"><img.+?>(.+?) </div>~im',$content,$matches)){
                return $matches[2];
            }else{
                return FALSE;
            }
        break;
        case 'google':
            $rank = explode(':',$content);
            if($rank[2] != '')
                return $rank[2];
            else
                return FALSE;
        break;
        default:
            return FALSE;
        break;
    }
}
// Alexa Page Rank:
echo 'Alexa Rank: '.page_rank('techug.com');
echo '
';
// Google Page Rank
echo 'Google Rank: '.page_rank('techug.com', 'google');

五、强制下载文件

 代码如下 复制代码

$filename = $_GET['file']; //Get the fileid from the URL
// Query the file ID
$query = sprintf("SELECT * FROM tableName WHERE id = '%s'",mysql_real_escape_string($filename));
$sql = mysql_query($query);
if(mysql_num_rows($sql) > 0){
    $row = mysql_fetch_array($sql);
    // Set some headers
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
    header("Content-Disposition: attachment; filename=".basename($row['FileName']).";");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".filesize($row['FileName']));

    @readfile($row['FileName']);
    exit(0);
}else{
    header("Location: /");
    exit;
}
六、用Email显示用户的Gravator头像

$gravatar_link = 'http://www.gravatar.com/avatar/' . md5($comment_author_email) . '?s=32';
 echo '<img src="' . $gravatar_link . '" />';

七、用cURL获取RSS订阅数

 代码如下 复制代码
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'https://feedburner.google.com/api/awareness/1.0/GetFeedData?id=7qkrmib4r9rscbplq5qgadiiq4');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,2);
$content = curl_exec($ch);
$subscribers = get_match('/circulation="(.*)"/isU',$content);
curl_close($ch);

八、时间差异计算

 代码如下 复制代码

function ago($time)
{
   $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
   $lengths = array("60","60","24","7","4.35","12","10");

   $now = time();

       $difference     = $now - $time;
       $tense         = "ago";

   for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
       $difference /= $lengths[$j];
   }

   $difference = round($difference);

   if($difference != 1) {
       $periods[$j].= "s";
   }

   return "$difference $periods[$j] 'ago' ";
}

九、截取图片

 代码如下 复制代码

$filename= "test.jpg";
list($w, $h, $type, $attr) = getimagesize($filename);
$src_im = imagecreatefromjpeg($filename);

$src_x = '0';   // begin x
$src_y = '0';   // begin y
$src_w = '100'; // width
$src_h = '100'; // height
$dst_x = '0';   // destination x
$dst_y = '0';   // destination y

$dst_im = imagecreatetruecolor($src_w, $src_h);
$white = imagecolorallocate($dst_im, 255, 255, 255);
imagefill($dst_im, 0, 0, $white);

imagecopy($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h);

header("Content-type: image/png");
imagepng($dst_im);
imagedestroy($dst_im);

十、检查网站是否宕机

 代码如下 复制代码

function Visit($url){
       $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";$ch=curl_init();
       curl_setopt ($ch, CURLOPT_URL,$url );
       curl_setopt($ch, CURLOPT_USERAGENT, $agent);
       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt ($ch,CURLOPT_VERBOSE,false);
       curl_setopt($ch, CURLOPT_TIMEOUT, 5);
       curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
       curl_setopt($ch,CURLOPT_SSLVERSION,3);
       curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
       $page=curl_exec($ch);
       //echo curl_error($ch);
       $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
       curl_close($ch);
       if($httpcode>=200 && $httpcode<300) return true;
       else return false;
}
if (Visit("http://www.google.com"))
       echo "Website OK"."n";
else
       echo "Website DOWN";

上传文件意思是把文件从本地上传到网络服务器上去了,对于php来讲上传文件上非常的简单,下面小编为初学者来深入分析一下php上传文件例子。

通过 PHP,可以把文件上传到服务器。
创建一个文件上传表单
允许用户从表单上传文件是非常有用的。
请看下面这个供上传文件的 HTML 表单:

 代码如下 复制代码
<html> 
<body> 
<form action="upload_file.php" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file" />  
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 
</body> 
</html> 

请留意如下有关此表单的信息:

<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。
<input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
注释: 允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

创建上传脚本
"upload_file.php" 文件含有供上传文件的代码:

 代码如下 复制代码
<?php 
if ($_FILES["file"]["error"] > 0) 
  { 
  echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
  } 
else 
  { 
  echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
  echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
  echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
  } 
?> 

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:
$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。
上传限制在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:

 代码如下 复制代码
<?php 
 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 20000)) 
  { 
  if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
    } 
  else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
    echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
    } 
  } 
else 
  { 
  echo "Invalid file"; 
  } 
 
?> 

注释: 对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。
保存被上传的文件
上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。
这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

 代码如下 复制代码
<?php 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 20000)) 
  { 
  if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
    } 
  else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 
 
    if (file_exists("upload/" . $_FILES["file"]["name"])) 
      { 
      echo $_FILES["file"]["name"] . " already exists. "; 
      } 
    else 
      { 
      move_uploaded_file($_FILES["file"]["tmp_name"], 
      "upload/" . $_FILES["file"]["name"]); 
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
      } 
    } 
  } 
else 
  { 
  echo "Invalid file"; 
  } 
?> 

上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。
注释: 这个例子把文件保存到了名为 "upload" 的新文件夹。

补充一下:自定义的一个PHP上传附件的类

 代码如下 复制代码

<?php
/**
 * File up load class
 */
class upLoad
{
 /**
 *
 * @param  string $info   文件内容
 * @param  string $fileName    天生的文件名
 * @return   boolean    建立成功返回true
 * @deprecated
 * 建立html文件
 */
 function createHtml( $info ,$fileName )
 {
 }
 /**
 *
 * @return  void
 * @deprecated
 * 结构函数
 */
 function downLoad()
 {}
 /**
 *
 * @param   string $fileField 在表单中的字段名
 * @param   string $length      限制的长度
 * @return    boolean      成功返回true
 * @deprecated
 * 功效实现函数
 */
 function init($fileField,$length='')
 {
  $files    = $_FILES[$fileField];
  //用户名需要修正,根据自己的实际情况做修正
  $userName = 'sanshi';
  $fileName = $files['name'];
  $fileType = $files['type'];
  $fileTemp = $files['tmp_name'];
  $fileSize = empty( $length ) ? ($files['size'] 10) : $length;
  $fileError= $files['error'];//这块也许php4中没有
  //改为
  //if( $this->_isType( $fileName ) || $this->_isBig( $length ) )
  if( !$this->_isType( $fileName ) || $this->_isBig( $length ) || $fileError != 0  )
  {
   //print_r ($files);
   return false;
  }else{
   $path = $this->_createDir( $userName );//取得路径
   $createFileName = $userName . '_' . time();//设置当前文件名
   $createFileType = $this->getFileType($fileName);//设置文件种别
   return @move_uploaded_file($fileTemp,
$path.$createFileName.'.'.$createFileType) ? true : false;
  }
 }
 
 /**
 *
 * @param   int  $length  上传限制的大小
 * @return    boolean    超过返回true
 * @deprecated
 * 判定是否超过预定大小
 */
 function _isBig($length)
 {
  $bigest = '';
  return $big > $bigest ? true : false;
}
?>

[!--infotagslink--]

相关文章

  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • cmd下过滤文件名称的两种方法

    这篇文章主要介绍了cmd下过滤文件名称的两种方法,需要的朋友可以参考下...2020-06-30
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • 使用list stream: 任意对象List拼接字符串

    这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
  • C# 16 进制字符串转 int的方法

    这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 获取中文字符串的实际长度代码

    JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • php 中英文混合字符串截取

    文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
  • C#实现对字符串进行大小写切换的方法

    这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 解决vue字符串换行问题(绝对管用)

    这篇文章主要介绍了解决vue字符串换行问题(绝对管用),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-06
  • C#判断一个字符串是否是数字或者含有某个数字的方法

    这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 【C#基础】Substring截取字符串的方法小结(推荐)

    这篇文章主要介绍了Substring截取字符串方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25