当前位置:  编程技术>php
本页文章导读:
    ▪php判断字符集并转码的函数代码      php自定义函数,实现判断字符集并转码功能。 原理分析: gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。 英文环境下,不论在何.........
    ▪实例详解php中self、parent、this的区别      php面向对象编程中this,self,parent的用法。 一,this 1,使用用this,必须有个实例化后的对象,否则会报错:Fatal error: Using $this when not in object context。 2,this可以调用本类中的方法和属性,也可.........
    ▪PHP get_headers检测远端文件是否存在的方法      例子,get_headers函数检测远程文件是否存在。 代码:   代码示例: <?php  $url = 'http://example.com';  $hander_array = get_headers ( $url );  if ($header_array [0] == 'HTTP/1.1 200 OK') {      echo '文件存.........

[1]php判断字符集并转码的函数代码
    来源: 互联网  发布时间: 2013-12-24

php自定义函数,实现判断字符集并转码功能。

原理分析:
gb2312/gbk是中文两字节,这两个字节是有取值范围的,而utf-8中汉字是三字节,同样每个字节也有取值范围。
英文环境下,不论在何种编码情况下,都是小于128,只占用一个字节(全角除外)。

如果是文件形式的编码检查,还可以直接check utf-8的BOM信息。

下面是这个函数的完整代码,用来对字符串编码进行检查和转码。
例子:
 

代码示例:
<?php 
function safeEncoding($string,$outEncoding ='UTF-8')     
{     
    $encoding = "UTF-8";     
    for($i=0;$i<strlen($string);$i++)     
    {     
        if(ord($string{$i})<128)     
            continue;     
         
        if((ord($string{$i})&224)==224)     
        {     
            //第一个字节判断通过     
            $char = $string{++$i};     
            if((ord($char)&128)==128)     
            {     
                //第二个字节判断通过     
                $char = $string{++$i};     
                if((ord($char)&128)==128)     
                {     
                    $encoding = "UTF-8";     
                    break;     
                }     
            }     
        }     
     
        if((ord($string{$i})&192)==192)     
        {     
            //第一个字节判断通过     
            $char = $string{++$i};     
            if((ord($char)&128)==128)     
            {     
                // 第二个字节判断通过     
                $encoding = "GB2312";     
                break;     
            }     
        }     
    }     
              
    if(strtoupper()($encoding) == strtoupper($outEncoding))     
        return $string;     
    else    
        return iconv($encoding,$outEncoding,$string);     

?>

您可能感兴趣的文章:
学习php字符串编码的转换与判断
php获取字符串的编码格式的函数
PHP字符串编码问题分析
php iconv字符串编码转换(GBK到UTF8字符集)的例子
php 自动检测内容编码并转换的代码
php编码转换函数(自动转换字符集支持数组转换)
php改变编码的函数iconv


    
[2]实例详解php中self、parent、this的区别
    来源: 互联网  发布时间: 2013-12-24

php面向对象编程中this,self,parent的用法。

一,this
1,使用用this,必须有个实例化后的对象,否则会报错:Fatal error: Using $this when not in object context。
2,this可以调用本类中的方法和属性,也可以调用父类中的可以调的方法和属性。

二,self
1,self可以访问本类中的静态属性和静态方法,可以访问父类中的静态属性和静态方法。
2,使用self时,可以不用实例化。

三,parent
1,parent可以访问父类中的静态属性和静态方法。
2,使用parent时,可以不用实例化。

有关php中self、parent、this的区别,还可以先看看之前的这篇:php中this,self,parent的区别 。

下面为了大家更好的理解php中self、parent、this的区别,我们来举个例子:
 

代码示例:
<?php
/**
* self、parent、this的区别
* by www.
*/
class test{ 
 public $public; 
 private $private; 
 protected $protected; 
 static $instance; 
 static $good = 'tankzhang <br>'; 
 public $tank = 'zhangying <br>'; 
 
 public  function __construct(){ 
 $this->public    = 'public     <br>'; 
 $this->private   = 'private    <br>'; 
 $this->protected = 'protected  <br>'; 
 
 } 
 public function tank(){ //私有方法不能继承,换成public,protected 
 if (!isset()(self::$instance[get_class()])) 
 { 
 $c = get_class(); 
 self::$instance = new $c; 
 } 
 return self::$instance; 
 }     
 
 public function pub_function() { 
 echo "you request public function<br>"; 
 echo $this->public; 
 } 
 protected  function pro_function(){ 
 echo "you request protected function<br>"; 
 echo $this->protected; 
 } 
 private function pri_function(){ 
 echo "you request private function<br>"; 
 echo $this->private; 
 } 
 static function sta_function(){ 
 echo "you request static function<br>"; 
 } 

 
class test1 extends test{ 
 
 static $love = "tank <br>"; 
 private $aaaaaaa = "ying <br>"; 
 
 public function __construct(){ 
 parent::tank(); 
 parent::__construct(); 
 } 
 public function tank(){ 
 echo $this->public; 
 echo $this->protected; 
 echo $this->aaaaaaa; 
 $this->pro_function(); 
 } 
 
 public  function test1_function(){ 
 echo self::$love; 
 echo self::$good; 
 echo parent::$good; 
 echo parent::$tank;   //Fatal error: Access to undeclared static property: test::$tank 
 echo self::$tank;     //Fatal error: Access to undeclared static property: test::$tank 
 } 
 static function extends_function(){ 
 parent::sta_function(); 
 self::pro_function(); 
 echo "you request extends_private function<br>"; 
 } 

 
error_reporting(E_ALL); 
$test = new test1(); 
$test->tank(); //子类和父类有相同名字的属性和方法,实例化子类时,会调用子类中的方法。 
test1::test1_function(); 
test1::extends_function();  //执行一部分后,报Fatal error: Using $this when not in object context in D:\xampp\htdocs\mytest\www4.php on line 32 
?>

代码说明:
1,当调用$test->tank(); 方法时,tank里面的$this是一个对像,这个对像可以调用本类,父类中的方法和属性,
2,test1::test1_function(); 当用静态的方法去调用非静态方法时,会显示警告:Non-static method test::test1_function() should not be called statically。
self可以调用本类,父类中的静态属性 ,parent可以调用父类中的静态属性 ,二者调用非静态属性会报错。
3,test1::extends_function(); 这一步会报错,报在非对像中使用$this 。
test1::extends_function();只是调用了class中的一个方法,并没有实例化,不存在什么对像,当父类中用到$this时,当然就报错了。


    
[3]PHP get_headers检测远端文件是否存在的方法
    来源: 互联网  发布时间: 2013-12-24

例子,get_headers函数检测远程文件是否存在。
代码:
 

代码示例:
<?php 
$url = 'http://example.com'; 
$hander_array = get_headers ( $url ); 
if ($header_array [0] == 'HTTP/1.1 200 OK') { 
    echo '文件存在'; 
} else { 
    echo '文件不存在'; 
}
 

说明:
get_headers函数的作用:当访问一个远程地址,把服务器发送的HTTP头以数组形式返回。
而$header[0]则是服务器返回的状态码(状态码一般是第一个返回的)。
因此,要确定一个文件在远端服务器上存在,只需要确定访问这个文件返回的状态码是"HTTP/1.1 200 OK"即可。
也可以通过判断状态码不是"HTTP/1.1 404 Not Found",也可以给出文件存在的解答。

下面再分享二个get_headers函数的例子,供大家参考。

1,获取三位HTTP响应码的例子:
 

代码示例:
<?php 
function get_http_response_code($theURL) { 
    $headers = get_headers($theURL); 
    return substr($headers[0], 9, 3); 

?>

2,排除重定向的例子:
 

代码示例:
<?php 
/**
 * 获取不包含重定向的报头
 * by www.
 */ 
  
function get_real_headers($url,$format=0,$follow_redirect=0) { 
  if (!$follow_redirect) { 
    //set new default options 
    $opts = array('http' => 
        array('max_redirects'=>1,'ignore_errors'=>1) 
    ); 
    stream_context_get_default($opts); 
  } 
  //get headers 
    $headers=get_headers($url,$format); 
    //restore default options 
  if (isset($opts)) { 
    $opts = array('http' => 
        array('max_redirects'=>20,'ignore_errors'=>0) 
    ); 
    stream_context_get_default($opts); 
  } 
  //return 
    return $headers; 

?>

附,php get_headers()

get_headers
(PHP 5)

get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头

说明
array get_headers ( string $url [, int $format ] )
get_headers() 返回一个数组,包含有服务器响应一个 HTTP 请求所发送的标头。如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息。

如果将可选的 format 参数设为 1,则 get_headers() 会解析相应的信息并设定数组的键名。

说明:
自 PHP 5.1.3 起本函数使用默认的流上下文,其可以用 stream_context_get_default() 函数设定和修改。

get_headers()的例子:
 

代码示例:
<?php
$url = 'http://www.';
print_r(get_headers($url));
print_r(get_headers($url, 1));
?>

输出类似于:
 

Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Date: Sat, 29 May 2004 12:28:13 GMT
    [2] => Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
    [3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
    [4] => ETag: "3f80f-1b6-3e1cb03b"
    [5] => Accept-Ranges: bytes
    [6] => Content-Length: 438
    [7] => Connection: close
    [8] => Content-Type: text/html
)

Array
(
    [0] => HTTP/1.1 200 OK
    [Date] => Sat, 29 May 2004 12:28:14 GMT
    [Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)
    [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
    [ETag] => "3f80f-1b6-3e1cb03b"
    [Accept-Ranges] => bytes
    [Content-Length] => 438
    [Connection] => close
    [Content-Type] => text/html
)


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php提交表单到当前页面、提交表单后页面重定... iis7站长之家
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3