【转】php笔记


原文地址:http://apps.hi.baidu.com/share/detail/51619809
substr截取中文后出现乱码,插入数据库后乱码会消失。
截取中文应用mb_substr,但需要打开此扩展。


411 Length Required
如果您恰好使用了ff浏览器(偶用ff3.0),server端使用了nginx作代理,而某个ajax又恰好传了一个为null的数据,您就会看到这个错误


LWP是LibraryforWWWaccessinPerl的缩写,就是一个访问Web服务器的Perl包。


array_merge($arr1,$arr2)//如果键值相同后面value的覆盖前面的value


$key = 'jobarr["'.$matches['7'][$i].'"]["'.$matches['3'][$i].'"]';
$$key = $matches['2'][$i];//$$数组(2维)这样写无结果

$key1 = $matches['7'][$i];
$key2 = $matches['3'][$i];
$jobarr[$key1][$key2] = $matches['2'][$i];


'aaaaaa'==0 返回 1
'aaaaaa'=='0' 返回空


//如果php.exe 无法找到组件,没有找到php_mbstring.dll
$a = 'regsvr32 -i php_mbstring.dll';
$a_path = 'D:\AppServ\php5\ext';

//dos中运行php,php文件可以在任何位置
$eval = 'D:\AppServ\php5\php.exe -q D:\AppServ\www\baidu.php';

echo '加载php_mbstring.php:'.$a_path.'  '.$a;
echo '
';
echo '运行php文件:'.$eval;
?>


cmd命令行里输入 netstat -an 来查看自己开放端口.ip地址的后面的就是端口号



//获得php.ini中设置的值
echo 'post_max_size = ' . ini_get('post_max_size') . "\n";

memory_limit = 100M      ; Maximum amount of memory a script may consume (8MB)

post_max_size = 100M

//使用的内存数
echo ' memory='.memory_get_usage();

C:\WINDOWS\php.ini

smarty
<%foreach from = $errlevel_array key = k item = v%>
<%foreach和v%>内容和定界符之间不能有空格

get方式submit表单时 action中url不能传参 


php防止被缓存

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pramga: no-cache");


print和var_dump的区别
$colors = array('red', 'blue', 'green', 'yellow');
print_r($colors);
echo '
';
var_dump($colors);

输出结果如下:
Array ( [0] => red [1] => blue [2] => green [3] => yellow )
array(4) { [0]=> string(3) "red" [1]=> string(4) "blue" [2]=> string(5) "green" [3]=> string(6) "yellow" }

用print_r()来显示布尔值和NULL是没有意义的.








netbeans设置字符集
打开/NetBeans 6.9.1/etc/netbeans.conf 文件, 找到etbeans_default_options这一行, 然后把以下代码:
-J-Dfile.encoding=UTF-8
添加入去.

修改后
netbeans_default_options=”-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dfile.encoding=UTF-8”




phpMyAdmin连接多服务器设置
http://dimingchan.iteye.com/blog/800647
2008-01-07 19:57

方法一:

通过\scripts\setup.php来进行配置文件的设置:

如 果进入setup.php页面显示“Can not load or save configuration”,“Please create web server writable folder config in phpMyAdmin toplevel directory as described in documentation. Otherwise you will be only able to download or display it.


请在phpMyAdmin根目录下建立文件夹“config”,并在其中建立文件:config.inc.php。再浏览\scripts\setup.php,“Can not load or save configuration”消失。

点 击Server->Add添加服务器配置信息,点击Configuration->Save保存配置信息到\config \config.inc.php,保存后请将其复制到phpMyAdmin根目录下。(本机只填localhost 用户名 密码 即可,个人认为最好设下session名)

修改\libraries\config.default.php中的 $cfg['ServerDefault']=0;//为不使用默认服务器配置。
再运行phpMyAdmin就可以选择服务器了。

方法二:

也 可以修改phpMyAdmin根目录下config.sample.inc.php,复制从/* Authentication type */到/* * End of servers configuration */之间的内容,并对其进行修改,改为你要进行配置的服务器信息。然后另存为phpMyAdmin根目录/config.inc.php。

注意:如果要连接多个服务器,推荐设置“Authentication type”为“cookie”,因为其它两种方式要先进入第一个服务器后才能再进行选择,而不能直接进入非第一个服务器。
其它两种验证方式:

如果要使用验证窗口:请将$cfg['Servers'][$i]['auth_type'] 设置为:“http”,这样在进入时同样要输入用户名和密码,但用户名和密码是在验证窗口内输入的。

如果要不登录就直接进入请增加:
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = '用户名';
$cfg['Servers'][$i]['password'] = '密码';
当auth_type为cookie时会忽略用户名和密码项,且必须设置
$cfg['blowfish_secret'] = '**';。//好像是密钥之类的。


PHP获取当前文件路径,上层目录路径

取的現在檔案、目錄、上層目錄
於 test.php 內, 要做取得路徑、目錄等, 可見下述:
取得 路徑 + 檔名 (要取得 /var/www/project/test.php)
    * echo __FILE__;
取得 檔名 (要取得 test.php)
    * echo basename(__FILE__);
取得 不含附檔名的檔名 (要取得 test)
    * echo basename(__FILE__, '.php');
取得 到此目錄前的完整 PATH, 不含檔名 (要取得 /var/www/project)
    * echo dirname(__FILE__);
取得 到上層目錄前的完整 PATH (要取得 /var/www)
    * echo dirname(dirname(__FILE__));


mysql_query("SET NAMES 'utf8'");



php移动文件 函数
$a   =   rename( 'test.php ',   '../test.html ');
rename("/tmp/tmp_file.txt", "/home/user/login/docs/my_file.txt");


建立socket 客户端.
  
  1、通过 fsockopen() 建立socket连接,然后用用fputs() 发送消息,用 fgets() 接收消息。
  
  2、通过 socket_create() 建立 socket 连接,然后用 socket_send() or socket_write() 发送消息,用 socket_recv() or socket_read() 发送消息。
  











curl

修改页面使用内存最大值
ini_set('memory_limit', '128M');

正则匹配取相应的值
$reg_gs = '/([\s\S]*)/iU';
preg_match($reg_gs, $s, $d);//$s要匹配的字符串,$d返回值
$RS_data[$i]['gs'] = trim($d[1]);

curl获取一个页面的内容(最后面函数)
curl批量获取多个页面内容(最后面函数)

header("Content-Type: text/html; charset=utf-8");//设置字符编码

set_time_limit(0);//取消时间限制

php ftp上传文件(最后面函数)

fsockopen方式post数据/获取页面(最后面函数)

php页面防止被缓存
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pramga: no-cache");

接收post二进制文件自动退出页面
echo 'post_max_size = ' . ini_get('post_max_size') . "\n";//获得php.ini中设置的值
memory_limit = 100M      ; Maximum amount of memory a script may consume (8MB)
post_max_size = 100M
phpini位置
C:\WINDOWS\php.ini

php表单方式接受post文件时自动退出页面
php.ini 的 设置选项
file_uploads
upload_max_filesize
upload_tmp_dir
post_max_size
max_input_time

echo ' memory='.memory_get_usage();//使用的内存数

php获取远程文件大小(最后面函数)(转自:http://topic.csdn.net/u/20110306/11/f32aa0fc-3079-419f-be48-28eb742c44a0.html?85734)

print_r和var_dump的区别
$colors = array('red', 'blue', 'green', 'yellow');
print_r($colors); //Array ( [0] => red [1] => blue [2] => green [3] => yellow )
var_dump($colors);//array(4) { [0]=> string(3) "red" [1]=> string(4) "blue" [2]=> string(5) "green" [3]=> string(6) "yellow" }
用print_r()来显示布尔值和NULL是没有意义的.





取一个页面的内容
    function curl_file_get_content($durl) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $durl); //设置url
        curl_setopt($ch, CURLOPT_TIMEOUT, 3); //设置超时时间
        curl_setopt($ch, CURLOPT_USERAGENT, 'Baiduspider'); //在请求中包含一个"User-Agent: "头的字符串。
        curl_setopt($ch, CURLOPT_REFERER, $durl); //在HTTP请求头中"Referer: "的内容。
        curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
        $r = curl_exec($ch);
        curl_close($ch);
        return $r;
    }


批量获取多个url对应页面
    function curl_file_get_contents($urls) {
        $url_num = count($urls);
        $remainder = $url_num % 20;
        $si_num = floor($url_num / 20);
        for ($si = 0; $si <= $si_num; $si++) {
            if ($si != $si_num) {
                $max_i = 20;
            } else {
                $max_i = $remainder;
            }
            // 创建批处理cURL句柄
            $mh = curl_multi_init();
            for ($i = 0; $i < $max_i; $i++) {
                $var_name = 'ch' . $i;
                $current_url = $urls[$si * 20 + $i];
                $$var_name = curl_init($current_url); //初始化,设置url

                curl_setopt($$var_name, CURLOPT_TIMEOUT, 8); //设置时间
                curl_setopt($$var_name, CURLOPT_USERAGENT, 'Baiduspider'); //在请求中包含一个"User-Agent: "头的字符串。
                curl_setopt($$var_name, CURLOPT_REFERER, $current_url); //在请求头中"Referer: "的内容。
                curl_setopt($$var_name, CURLOPT_HEADER, 0); // make sure we get the body
                curl_setopt($$var_name, CURLOPT_RETURNTRANSFER, 1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
                curl_multi_add_handle($mh, $$var_name);
            }

            do {
                curl_multi_exec($mh, $running); //解析一个cURL批处理句柄
            } while ($running > 0);

            while ($active && $mrc == CURLM_OK) {
                if (curl_multi_select($mh) != -1) {//curl_multi_select - [等待]连接活动curl_multi 添加判断后速度慢了
                    do {
                        $mrc = curl_multi_exec($mh, $active);
                    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
                }
            }

            //得到返回值
            for ($i = 0; $i < $max_i; $i++) {
                $var_name = 'ch' . $i;
                $results[] = curl_multi_getcontent($$var_name);
                curl_multi_remove_handle($mh, $$var_name);
            }
            curl_multi_close($mh);
        }
        return $results;
    }

php ftp上传文件

    private  function ftp_upload_file($remote_file,$file){
        //ftp服务器 地址 用户名 密码
        $ftp_url ='127.0.0.1';
        $ftp_user_name = 'test';
        $ftp_user_pass = '123456';
        //文件存放于ftp服务器的目录名
        $ftp_file_path = '/ftp2/';
       
        // set up basic connection
        $conn_id = ftp_connect($ftp_url);
        if ($conn_id<1) {
             return 'ftp连接失败';
        }

        // login with username and password
        $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
        if (!$login_result) {
             return 'ftp登陆失败';
        }
        // upload a file
        if (!ftp_put($conn_id, $ftp_file_path.$remote_file, $file, FTP_BINARY)) {
             return 'ftp上传失败';//There was a problem while uploading $file
        }
        // close the connection
        ftp_close($conn_id);
        return '文件上传成功';
    }


fsockopen post数据
    private function fsockopen_post($url, $post) {//$url='', $post 数组

        $url = str_replace('http://', '', $url);
        $srv_port = 80;
        $errno = 0;
        $errstr = '';
        $timeout = 1000;

        $url_arr = explode('/', $url);
       
        $url_base = $url_arr[0];
        $url_page = str_replace($url_base, '', $url);

        $fp = '';
        $resp_str = '';

        foreach ($post as $k => $v) {
            $post_str .= $k.'='.$v.'&';
        }
        $post_str = substr($post_str, 0, -1);

        $fp = fsockopen($url_base, $srv_port, $errno, $errstr, $timeout);
        if (!$fp) {
            return '50';
        }

        $content_length = strlen($post_str);

        $post_header = "POST $url_page HTTP/1.1\r\n";
        $post_header .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $post_header .= "User-Agent: MSIE\r\n";
        $post_header .= "Host: " . $url_base . "\r\n";
        //$post_header .= "Referer: http://".'伪造来路'."rn";
        $post_header .= "Content-Length: " . $content_length . "\r\n";
        $post_header .= "Connection: close\r\n\r\n";
        $post_header .= $post_str . "\r\n\r\n";

        fwrite($fp, $post_header);

        while (!feof($fp)) {
            $resp_str_tmp = fread($fp, 512); //返回值放入$resp_str
            $resp_str .= $resp_str_tmp;
        }
       
        fclose($fp);
        echo($resp_str);
//处理返回值...

    }


php获取远程文件大小(转:http://topic.csdn.net/u/20110306/11/f32aa0fc-3079-419f-be48-28eb742c44a0.html?85734)
function getFileSize($url){ 
$url = parse_url($url);
if($fp = @fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){
  fputs($fp,"GET ".(empty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n");
  fputs($fp,"Host:$url[host]\r\n\r\n");
  while(!feof($fp)){
  $tmp = fgets($fp);
  if(trim($tmp) == ''){
  break;
  }else if(preg_match('/Content-Length:(.*)/si',$tmp,$arr)){
  return trim($arr[1]);
  }
  }
  return null;
}else{
  return null;
}
}
    header("content-type:text/html;charset=gbk");
    $username = 'xxxx';//ftp帐号
    $password = 'xxxx';//ftp密码
    $url = 'xxx.xxx.xxx/xx.xxx'; //ftp服务器地址+文件路径+文件名例如: ftp.t35.com/down.zip
    $ftp_server = "ftp://" . $username . ":" . $password . "@" . $url;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $ftp_server);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);

    $output = curl_exec($ch);
    curl_close($ch);
    //echo $output ;
    preg_match('/Content-Length: (\d+)/i',$output,$arr);
    echo '文件长度:'.$arr[1] ;

你可能感兴趣的:(【转】php笔记)