1.聚合:最终为大家共享
组合:最终为一体
2.如何编写可移植的php代码:
将所有设置和PHP常量放在一个文件中,这样可以从如何函数或类使用它们。 考虑使用XML文件或是将这些信息存到数据库,
注意parse_ini_file函数

关闭magic_quotes
if(get_magic_quotes_gpc()){
    $_GET =array_map('stripslashes',$_GET);
    $_POST =array_map('stripslashes',$_GET);
    $_GET =array_map('stripslashes',$_GET);
}
3.pdo

1)连接mysql
$dsn='mysql:host=localhost;dbname=world;';

$user ='user';
$password ='secret';
try{
    $dbh = new PDO($dsn,$user,$password);
}catch(PDOException $e){
    echo 'Connection failed'.$e->getMessage();
}


2)连接SQLite
$dsn ='sqlite2:"C:\sqlite\world.db"';

try{
    $dbh = new PDO($dsn);
}catch(PDOException $e){
    echo 'Connection failed'.$e->getMessage();
}
4.利用PDO使用存储过程

DROP PROCEDURE IF  EXISTS getQuote;
DELIMITER
CREATE PROCEDURE getQuote()
BEGIN
DECLARE outStr VARCHAR(45);
SET outStr="Out,damned ";
SELECT outStr;
END


try{
    $dbh=new PDO($dsn,$user,$password);
    $dbn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    
    $sql='CALL getQuote()';
    
    $stmt =$dbh->prepare($sql);
    $stmt->execute();
    $return_string =$stmt->fetch();
}catch(PDOException $e){
    echo "PDO Exception Caught";
    echo "Error with the database :<br/>";
    echo "SQL QUery:".$sql;
}

5.强制在一定字符后折行
wordwrap($string,6,"<br/>");




6.substr_replace($text,$word,$start,$length):控制如何替换文本


7.PHP_EOL:当前操作系统行尾字符,被用作换行符,更具有可移植性
explode(PHP_EOL,$text);将一行作为数组的一个元素
implode($lines,PHP_EOL);反之

8.格式化文本输出
$format='%2$d cents will buy you a  %1$s.<br/>';
for($i=0;$i<3;$i++)
printf($format,$fruits[$i],$price[$i]);

9.Validate 有三个验证函数 string,email,url
Validate::string($_POST['name'],$name_options)
Validate::email($_POST['email'])
Validate::url($_POST['url'])

PEAR::Validate将生成E_STRICT错误

10.如何使用MySQL时间戳
DATE_FORMAT();


11.读取文件到数组,到字符串,到屏幕
1)$file=file("XXX.html");
$lined=count($file);


2)$file=file_get_contents("XXX.html");
$file=strip_tags($file);

3)readfile($file);

12.打开和关闭到文件的链接

$fp=fopen("XXX.html",'rb');//b是以二进制文件形式
fclose($fp);


13.1)处理小文件
$fp=fopen('XXX.html','rb');
fread($fp,filesize('xxx.html'));
2)处理大文件
$fp= fopen('xxx.html','rb');
while(!feof($fp)){
    $chunk=fgets($fp);
    echo $chunk;
}
fclose($fp);


14.如何修改本地文件
$lines =file('xxx.txt');
$fp=fopen('xxx.txt','w');
foreach($lines as $line){
    $line=strip_tags($line);
    //fget($fp);
    fwrite($fp,$line);
}

fclose($fp);


15.使用目录
1)$dp=opendir('./')
readdir($dp)
closedir($dp)
2)使用dir伪类
$dir=dir("./");
while($entry=$dir->read($dir))

if(is_dir('./'.$entry))

echo '';
elseif(is_file('./'.$entry))
echo 'lslk';


16.在文件中存储配置信息
parse_ini_file('目录',TRUE);


17.用php管理文件下载
$fileName='xxx.ini';
$mimeType='application/zip';
if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 5') or strpos($_SERVER['HTTP_USER_AGENT'],'Opera 7'))
$mimeType='application/x-download';

header('Content-Disposition:p_w_upload;filename='.$fileName);
header('Content-Type:'.$mimeType);
header('Content-Length:'.filesize($fileName));
readfile($fileName);

18.如何使用PHP创建压缩ZIP/TAR
(使用Archive_Tar类)
require_once 'Archive/Tar.php';
$tar =new Archive_Tar('demo.tar.gz','gz');
$files =array('xxx.ini',
              'writeSecureScripts.html'
              );
$tar->create($files);

$tar2= new Archive_Tar('demo.tar.gz');
$tar2->extract('demo');

19.压缩数据库数据
$db= new PDO(DBHOST,DBUSER,DBPASS,DBNAME);
$tar = new Archive_Tar('demo/article.tar.gz','gz');
$sql ='SELECT article_id,body FROM articles';
foreach($db->query($sql) as $row){
    $tar->addString('目录',$row['']);
}

20.使用PHP5中的标准PHP库操作文件
(使用DirectoryIterator类)
<?php
    try{
        foreach(new Directory() as $Item)
        {
            if($Item->getFilename())
            $Item->getPath()
            $Item->getPathname()
            $Item->getPerms()
            $Item->
        }
        foreach(get_class_methods('DirectoryIterator') as $methodName)
        {
            echo $methodName
        }
    }catch(){
    
    }