ホームページ  >  記事  >  バックエンド開発  >  PHP データ収集クラスのコード例

PHP データ収集クラスのコード例

怪我咯
怪我咯オリジナル
2017-07-16 14:41:103225ブラウズ

データ取得とも呼ばれるデータ取得は、デバイスを使用してシステムの外部からデータを収集し、それをシステムに入力するインターフェイスです。データ収集技術はさまざまな分野で広く活用されています。たとえば、カメラとマイクはすべてデータ収集ツールです。

収集されるデータは、温度、水位、風速、圧力などのさまざまな物理量を電気信号に変換したもので、アナログ量でもデジタル量でも構いません。収集は一般にサンプリング方式で行われます。つまり、同じ点のデータを一定の間隔 (サンプリング周期といいます) で繰り返し収集します。収集されるデータのほとんどは瞬間値である場合もあれば、一定期間内の特性値である場合もあります。正確なデータ測定はデータ収集の基礎です。データの計測方法には接触式と非接触式があり、検出部品もさまざまです。どのような方法や部品を使用する場合でも、データの精度を確保するには測定対象物の状態や測定環境に影響を与えないことが前提となります。データ収集とは、面状の連続物理量の収集を含む広い意味を持ちます。コンピュータ支援による製図、測量、設計において、グラフィックスや画像をデジタル化するプロセスをデータ収集と呼ぶこともあります。このとき、収集されるのは幾何量(またはグレースケールなどの物理量)データです。

今日、インターネット業界の急速な発展に伴い、データ収集はインターネットおよび分散分野で広く使用されており、データ収集の分野で重要な変化が起こっています。まず第一に、分散制御アプリケーションにおけるインテリジェントなデータ収集システムは、国内外で大きな進歩を遂げています。第 2 に、バス互換のデータ収集プラグインの数が増加し続けており、パーソナル コンピュータ互換のデータ収集システムの数も増加しています。国内外でさまざまなデータ収集機器が次々と登場し、データ収集は新たな時代を迎えています。

以下はデータ収集クラスです

<? 
// 兼容 php4 php5 
// 简单调用方法 
/* 
<? 
include ("ugs.php"); // 你可以下载本ugs.phps 然后重命名为ugs.php 
$ugs = new ugs(); 
$url = "http://domainname.com/path_to_your_target?param"; 
$ugs->seturl($url); 
$ugs->gather(); 
//............这里可以调用本类里的其它方法,对$ugs->value_  做调整, 
以满足您的要求 
$content=$ugs->getcontent(); 
print($content); 
?> 
*/ 
class ugs 
{ 
    var $value_  ;  //&#39;目标内容 
    var $src_    ;  //&#39;目标URL地址 

    function seturl($url) 
    { 
        $this->src_=$url; 
    } 
    function getcontent() 
    { 
        return $this->value_; 
    } 
    function getfile($url) 
     // 获取目标 
    { 
        $url_parsed = parse_url($url); 
        $host = $url_parsed["host"]; 
        $port = $url_parsed["port"]; 
        if ($port==0)  $port = 80; 
        $path = $url_parsed["path"]; 
        if (empty($path)) 
        $path="/"; 
        if ($url_parsed["query"] != "") 
           $path .= "?".$url_parsed["query"]; 
        $out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n"; 
        $fp = fsockopen($host, $port, $errno, $errstr, 30); 
        fwrite($fp, $out); 
        $body = false; 
        while (!feof($fp)) 
        { 
          $s = fgets($fp, 1024); 
          if ( $body )  $in .= $s; 
          if ( $s == "\r\n" ) 
               $body = true; 
        } 
        fclose($fp); 
        return $in; 
   } 

   function getfile_curl($url) 
   { 
    $curl="/usr/local/bin/curl " ; // path to your curl  
    $curl_options=" -s --connect-timeout 10  --max-time 10  ";  
    // curl 用法请参考 curl --help 或者 man curl  
    // curl 参数非常之丰富,可以模拟各种浏览器(agent) 可以设置referer 
    $cmd="$curl $curl_options $url "; 
    @exec($cmd,$o,$r); 
    if($r!=0)  
    { 
        return "超时"; 
    } 
    else 
    { 
        $o=join("",$o); 
        return $o; 
    } 
   } 

    function gather_curl($curl) 
    { 
        $http=$this->getfile_curl($this->src_); 
        return $this->value_=$http; 
    } 

    function gather_array($url) 
     { 
        return file($url); 
    } 

    function   gather() 
     // 开始收集 
    { 
        $http=$this->getfile($this->src_); 
        return $this->value_=$http; 
    } 

    function gather_local($toline=true) 
     // 处理本地文件 
    { 

        if($toline) 
        { 
            $http=file($this->src_); 
            return $this->value_=$this->BytesToBstr($http); 
        } 
        else 
        { 
            $http=file($this->src_); 
            return $this->value_=$http; 
        } 



    } 

    function noReturn() 
     // 删除回车换行 
    { 
        $this->value_=str_replace("\n","",$this->value_); 
        $this->value_=str_replace("\r","",$this->value_); 
    } 


    function change($oldStr,$str) 
    //&#39;对收集到的内容中的个别字符串用新值更换/方法 
    //&#39;参数分别是旧字符串,新字符串 
    { 
        $this->value_=str_replace($oldStr,$str,$this->value_ ); 
    } 



    function cut($start,$end,$no=&#39;1&#39;,$comprise=&#39;&#39;) 
    //&#39;按指定首尾字符串对收集的内容进行裁减(不包括首尾字符串)方法 
    // $no 必须是 1,2 3 ... 不允许是0 
    //$comprise 可以选择 start 或者 end 或者 all 或者 什么都不填 
    { 
        $string=explode($start,$this->value_); 
        //print_r($string); 
        $string=explode($end,$string[$no]); 
        //print_r($string); 
        switch ($comprise){ 
                case &#39;start&#39;: 
                        $string=$start.$string[0]; 
                break; 
                case &#39;end&#39;: 
                        $string=$string[0].$end; 
                break; 
                case &#39;all&#39;: 
                        $string=$start.$string[0].$end; 
                break; 
                default: 
                        $string=$string[0]; 
        } 
        return $this->value_=$string; 
        } 


    function  filt($head,$bot,$str,$no=&#39;1&#39;,$comprise=&#39;&#39;) 
    //&#39;按指定首尾字符串对收集的内容用新值进行替换(不包括首尾字符串)方法 
    // &#39;参数分别是首字符串,尾字符串,新值,新值位空则为过滤 
    { 
        $tmp_v=$this->value_; 
        $tmp=$this->cut($head,$bot,$no,$comprise); 
        return $this->value_=str_replace($tmp,$str,$tmp_v); 
    } 



    function  local() 
    { 
        //&#39;将收集的内容中的绝对URL地址改为本地相对地址 
        // 还没实现 
    } 



    function  replaceByReg($patrn,$str) 
     //&#39;对收集的内容中的符合正则表达式的字符串用新值进行替换/方法 
     //&#39;参数是你自定义的正则表达式,新值 
    { 
        return $this->value_=join("",preg_replace($patrn,$str,$this->value_)); 
    } 



    function debug() 
    //调试显示 
    { 
        $tempstr="<SCRIPT>function runEx(){var winEx2 = window.open(\"\", \"winEx2\", \"width=500,height=300,status=yes,menubar=no,scrollbars=yes,resizable=yes\"); winEx2.document.open(\"text/html\", \"replace\"); winEx2.document.write(unescape(event.srcElement.parentElement.children[0].value)); winEx2.document.close(); }function saveFile(){var win=window.open(&#39;&#39;,&#39;&#39;,&#39;top=10000,left=10000&#39;);win.document.write(document.all.asdf.innerText);win.document.execCommand(&#39;SaveAs&#39;,&#39;&#39;,&#39;javascript.htm&#39;);win.close();}</SCRIPT><center><TEXTAREA id=asdf name=textfield rows=32  wrap=VIRTUAL cols=\"120\">".$this->value_."</TEXTAREA><BR><BR><INPUT name=Button onclick=runEx() type=button value=\"查看效果\">  <INPUT name=Button onclick=asdf.select() type=button value=\"全选\">  <INPUT name=Button onclick=\"asdf.value=&#39;&#39;\" type=button value=\"清空\">  <INPUT onclick=saveFile(); type=button value=\"保存代码\"></center>"; 
        echo $tempstr; 
    } 


} 
?>

以上がPHP データ収集クラスのコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP adodbの使用法次の記事:PHP adodbの使用法