`
zhengdl126
  • 浏览: 2509543 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

【汇总】php实用

    博客分类:
  • php
阅读更多

?????优化下列函数
function text($str) {
preg_replace('/a/', 'z', $str);
preg_replace('/b/', 'z', $str);
preg_replace('/c/', 'z', $str);
return $str;
}

 

6.如何处理SQL 注入

MySQL
7.如何读取一个表的表类型,以及读取一个表中字段 的类型.

 

 

 

 

=========== set 字段的处理

 

 


permission set('t','a','s','v','w')
status_set set('t','a','s','v','w')



 //返回含有XTSD的所有行
SELECT * FROM a_user_info WHERE FIND_IN_SET('XTSD',permission)>0;
SELECT user_id,status_set FROM a_user_info WHERE user_id = 1

#2 的 N(第几位,0开始算)次方


#添加对应2和4的set值:2 = 2的1(第1个,0开算)次方
UPDATE a_user_info SET   `status_set`=`status_set` |2|4  WHERE user_id = 1
#删除对应2和4的set值
UPDATE a_user_info SET   `status_set`=`status_set` &~2&~4  WHERE user_id = 1
SELECT status_set FROM a_user_info  WHERE user_id = 1




UPDATE devb_user_info SET   `permission`=`permission` &~1  WHERE user_id = 1;//去掉第一个
UPDATE devb_user_info SET   `permission`=`permission` &~2  WHERE user_id = 1; //去掉第二个

UPDATE devb_user_info SET   `permission`=`permission` &~256  WHERE user_id = 1;//去掉第九个


//第一次登录要求修改密码后,第一次登录标志如果存在,则去除
$sql = "UPDATE " . $this->getTableName('user_info') . " SET status_set = status_set &~4 WHERE user_id = :user_id";
                    $command = Yii::app()->db->createCommand($sql);
                    $command->bindParam(":user_id", $userId);
                    $command->execute();





$sql = "UPDATE " . $this->getTableName('user_info') . " SET status_set = status_set |4 WHERE user_id = :user_id";

 

 

 

------------ php 捕获异常

 

try {

} catch ( Exception $e ) {
            // 写日志
            Yii::app()->utils->logError('异常,saveOrder方法,异常信息是:' . $e->getMessage() . " \r\n");
        }

 

 

------------ php get中文乱码问题

 

http://host/livetw/chat.php?name=<?php echo base64_encode ($userInfo ["user_name"]); ?>
$corp = base64_decode(str_replace (" ","+",$_GET["corp"]));

 

 

============php自身的strtotiime('-1 month')存在bug

 


它只取30天
mktime(date("H"),date("i"),date("s"),date("m")-1,date("d"),date("Y"));

 

 

============TINYINT 型的字段

 

只能存储从0到255的整数,不能用来储存负数
(1)表示显示长度为1,一般用来当boolean类型使用.
2的8次幂 = 256 (unsigned)
0-255 这个不用解释吧
unsigned tinyint 1个字节 = 2^8 - 1
unsigned int 4个字节 = 2^32 -1

 

------------ 时间比较strtotime

$nowtime = strtotime(date('H:i', Yii::app()->utils->getDbDateTime()));
            if ($nowtime >= $maintain_begin && $nowtime <= $maintain_end) {

 

-----------------

echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:\www\test.php
echo dirname(__FILE__); // 取得当前文件所在的绝对目录,结果:D:\www\
echo dirname(dirname(__FILE__)); //取得当前文件的上一层目录名,结果:D:\

 

 

 

----------------- php 扩展的一些资料

 

 

http://downloads.php.net/pierre/ php 扩展下载
http://www.splinedancer.com/memcached-win32/     memcached-win32下载
http://pecl.php.net
http://curl.haxx.se/download/

 

 

 

------------------------   <<<S      S;


$sql_user = <<<S
SELECT count(*) as c from yc_user where regdate <= {$end_time} and regdate > {$start_time}
S;


echo <<<S
<html>
<form name="add_egg" action="#" method="POST">

......

</form>
<br>                   
S;

 

 

 

 

-------------addcslashes

 

 addcslashes() 函数在指定的字符前添加反斜杠。

 

--------------file

PHP file() 函数把整个文件读入一个数组中。与 file_get_contents() 类似,不同的是 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回 false。

 

Array ( [0] => Hello World. Testing testing! [1] => Another day, another line. [2] => If the array picks up this line, [3] => then is it a pickup line? )

 

 

----------------switch多个case 

 

switch  (a)  { 
case  1: 
case  2: 
case  3: 
      System.out.println("a  :"  +  a); 
      break; 
case  4: 
      System.out.println("a  :"  +  a); 
      break; 
case  5: 
      System.out.println("a  :"  +  a); 
      break; 
}

 

 

 

------------------unset

// 销毁一个以上的变量unset ($foo1, $foo2, $foo3)

 

 

 

 

 

 

--------------base64_encode base64_decode  urldecode urlencode


   base64_encode() returns 使用 base64 对 data 进行编码。设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。

Base64-encoded 数据要比原始数据多占用 33% 左右的空间。

 

例如:

&url='.base64_encode($_SERVER['REQUEST_URI']));

 

 

base64_decode() 对 encoded_data 进行解码,返回原始数据,失败则返回 FALSE。返回的数据可能

 

 

 

urldecode  此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(% )后跟两位十六进制数,空格则编码为加号(+ )。

 

urlencode 解码给出的已编码字符串中的任何 %## 。返回解码后的字符串。

 

 

 

    $url=$_GET['url'];
    $url = base64_decode($url);
    $url = urldecode($url);

 

 

 

------------------------------构造函数常用写法

 

 

function sinaEditor($eName="content"){
        $this->eName=$eName;
    }
    function __construct($eName="content"){
        $this->sinaEditor($eName);
    }

 

 

------------------------------extract

extract($_POST);
extract($_GET);
unset($_POST,$_GET);
if(isset($act)){
$act=='subok' &&
die("提交的内容是:<br>".htmlspecialchars($content));
}

 

 

---------------------------------htmlspecialchar()函数   htmlspecialchars_decode与之相反
htmlspecialchar()函数与htmlentites()定义和参数意义相同,这里只提供语法结构,相信读者会通过上面的讲解领悟htmlspecialchar()函数使用方法。如下所示:

string htmlspecialchars (string,quotestyle,character-set)

一般转换的HTML字符如下:

'&'  (与)  转为  '&amp;'
'"'  (双引号) 转为 '&quot;'  当quotestyle 值不为 ENT_NOQUOTES 时。
'''  (单引号) becomes '&#039;'  当quotestyle 值为ENT_QUOTES时。
'<'  (小于) becomes '&lt;'
'>'  (大于) becomes '&gt;'



$arr_tag = unserialize(htmlspecialchars_decode($check_tag[0]["tid"]));

 

---------------------------------数组排序


sort -- 对数组排序  本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。



rsort //函数对数组进行逆向排序(最高到最低)。
<?php
$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

ksort -- 对数组按照键名排序
<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

asort -- 对数组进行排序并保持索引关系  本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>
c = apple
b = banana
d = lemon
a = orange

 

 

------------------filemtime

 

 

filemtime -- 取得文件修改时间
int filemtime ( string filename )
返回文件上次被修改的时间,出错时返回 FALSE。时间以 Unix 时间戳的方式返回,可用于 date()。

本函数返回文件中的数据块上次被写入的时间,也就是说,文件的内容上次被修改的时间。
每次修改文件之后,系统都会记录最后修改时间,你可以看看你自己电脑上的文件,都有修改时间的。

 

----------------------------&&


isset($v['extra']) && !empty($v['extra']) && $v['extra'] = unserialize($v['extra']);







----------------------------set_magic_quotes_runtime(0)
在开始(或不需要自动转义的时候)用set_magic_quotes_runtime(0)关掉,如果没有打开这项设置,可以使用addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
//GPC过滤
$magic_quote = get_magic_quotes_gpc();
if(empty($magic_quote)) {
    $_GET = saddslashes($_GET);
    $_POST = saddslashes($_POST);
}
//SQL ADDSLASHES
function saddslashes($string) {
    if(is_array($string)) {
        foreach($string as $key => $val) {
            $string[$key] = saddslashes($val);
        }
    } else {
        $string = addslashes($string);
    }
    return $string;
}

$_GET['ac'];

 

 

 

----------------

@define('IN_UCHOME', TRUE);
if(!defined('IN_UCHOME')) {
    exit('Access Denied');
}





----------------microtime --  返回当前 UNIX 时间戳和微秒数

返回格式为“msec sec”的字符串,其中 sec 是当前的 Unix 时间戳,msec 是微秒部分。如:0.98140600 1257472847
$mtime = explode(' ', microtime());
$_SGLOBAL['timestamp'] = $mtime[1];
$_SGLOBAL['supe_starttime'] = $_SGLOBAL['timestamp'] + $mtime[0];




----------------//取消HTML代码
function shtmlspecialchars($string) {
    if(is_array($string)) {
        foreach($string as $key => $val) {
            $string[$key] = shtmlspecialchars($val);
        }
    } else {
        $string = preg_replace('/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
            str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $string));
    }
    return $string;
}





----------------//全局变量global,$_SGLOBAL是数组
$_SGLOBAL['db']='111';
dbconnect();
function dbconnect() {
    global $_SGLOBAL;
        $_SGLOBAL['db'] = "222";
}
echo $_SGLOBAL['db'];//输出222




----------------节省变量开销
foreach (array('app', 'userapp', 'ad', 'magic') as $value) {



----------------//启用GIP。输出前使用尽量使用 ob_start();可以加快输出速度,适用NT对unix类服务器。如果使用ob_start('ob_gzhandler');输出效率将更高
if ($_SC['gzipcompress'] && function_exists('ob_gzhandler')) {
    ob_start('ob_gzhandler');
} else {
    ob_start();
}




----------------//允许的参数
$acs = array('login', 'register', 'lostpasswd', 'swfupload', 'inputpwd',
    'ajax', 'seccode', 'sendmail', 'stat', 'emailcheck');
if(empty($ac) || !in_array($ac, $acs)) {
    showmessage('enter_the_space', 'index.php', 0);
}



----------------//get参数处理
http://localhost/uchome/do.php?ac=68b97be82ae2ec45a41318006422c433
$ac = empty($_GET['ac'])?'':$_GET['ac'];
if($ac == $_SCONFIG['login_action']) {
    $ac = 'login';
} elseif($ac == 'login') {
    $ac = '';
}




----------------每个页面的路径标出来
/include

 

 

 

----------------intval  (int)

 

int intval ( mixed $var [, int $base ] )
通过使用特定的进制转换(默认是十进制),返回变量 var 的 integer 数值。

 

 

<?php
echo "<br/>数值强制转换:";
$string="2a";
$string1=intval($string);
echo '$string1的值:'.$string1.'$string2的值:';//单引号不会输出变量,将原样输出
$string2=(int)($string);
echo $string2

//都是输出 2

?>

-------------------------------ascII 与 字符互换 ord  chr

 

int ord ( character ) 返回一个指定ascii码的字符。
echo ord("a");
echo ord(54);



chr(ASCII)--返回指定的字符
echo chr(27);//

$str = "The string ends in escape: ";
$str .= chr(27); /* 在 $str 后边增加换码符 */
$str = sprintf("The string ends in escape: %c", 27);
echo $str;

 

-------------------------一个函数的参数不能是对变量的引用,除非在php.ini中把 ****设为on.
allow_call_time_pass_reference

 

 

 

---------------------------如何用php的环境变量得到一个网页地址的内容?ip地址又要怎样得到?
$_SERVSR[‘REQUEST_URI’]
$_SERVER[‘REMOTE_ADDR’]

 

 

 

---------------------------------mysql_fetch_row   mysql_fetch_array

mysql_fetch_row() 把数据库的一列储存在一个以零为基数的阵列中,第一栏在阵列的索引 0,第二栏在索引 1,如此类推。
mysql_fetch_assoc() 把数据库的一列储存在一个关联阵列中,阵列的索引就是栏位名称,例如我的数据库查询送回“first_name”、“last_name”、 “email”三个栏位,
阵列的索引便是“first_name”、“last_name”和“email”。
mysql_fetch_array() 可以同时送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。

 

-----------------------------------------------addslashes

防止SQL注射漏洞一般用 addslashes  函数

 

 

 

--------------sort asort ksort 的区别和用法

 

 

---------------------------------------heredoc


HereDoc的表示方法.

<<<标识符
文本块....
标识符;


结束符之前不能有任何的字符.结束标识符所在的行不能包含任何其它字符,可能除了一个分号(;)之外。这尤其意味着该标识符不能被缩进,而且在分号之前和之后都不能有任何空格或制表符。同样重要的是要意识到在结束标识符之前的第一个字符必须是你的操作系统中定义的换行符。例如在 Macintosh 系统中是 \r。

 

 

 

---------------------------------------exec 执行系统命令
@exec("ifconfig",$array); //取linux网卡
    for($Tmpa=0;$Tmpa<count($array);$Tmpa++)
    {
        if(eregi("eth0",$array[$Tmpa]))
        {
            return substr($array[$Tmpa],-17);
        }
    }

<? exec("cmd /c c:\\windows\\system32\\Rasphone.exe");?>

 

 

--------------------------------------字符与数字比较大小

$a = "test";
if($a == 0)
{
    echo $a;
}

字符串与数字比较时,会被强制转化为数字,字符串转化为数字一律为0

 

 

 

------------------------&&运算符:当前面的运算结果是真的时候才执行后面的,为假则不执行后面的,相当与if esle

 

$str="3453454";
!eregi('Referer',$str) && $str .="'Referer:http://{$Urlarr['host']}', \n";
echo $str;
//3453454'Referer:http://',

 

 

 

 

------------------------------phpmailer[见附件]

端口 25
sockets模块是enable

SMTP Error: Could not connect to SMTP host 报错:
selinux   关闭  setenforce 0
selinux   开启  setenforce 1

 

 

 

---------------serialize  产生一个可存储的值的表示

 常用于讲数组序列化存入mysql

 

 

-----------------------PHP 计算页面执行时间

<?php
class runtime
{
    
var $StartTime = 0 ;
    
var $StopTime = 0 ;
 
    
function get_microtime ()
    
{
        
list ( $usec , $sec ) = explode ( ' ' , microtime ()) ;
        
return (( float ) $usec + ( float ) $sec ) ;
    
}
 
    
function start ()
    
{
        
$this -> StartTime = $this -> get_microtime () ;
    
}
 
    
function stop ()
    
{
        
$this -> StopTime = $this -> get_microtime () ;
    
}
 
    
function spent ()
    
{
        
return round (( $this -> StopTime - $this -> StartTime ) * 1000 , 1 ) ;
    
}
 
}
 
 
//例子
$runtime = new runtime ;
$runtime -> start () ;
 
//你的代码开始
 
$a = 0 ;
for ( $i = 0 ; $i < 1000000 ; $i ++ )
{
    
$a += $i ;
}
 
//你的代码结束
 
$runtime -> stop () ;
echo " 页面执行时间: " . $runtime -> spent () . " 毫秒 " ;
 
?>

 

 

 

--------------------让PHP支持页面回退的两种方法

 

在开发过程中,往往因为表单出错而返回页面的时候填写的信息都不见了,为了支持页面回跳,可以通过两种方法实现。
第一,使用Header方法设置消息头Cache-control

header('Cache-control: private, must-revalidate');   //支持页面回跳

第二,使用session_cache_limiter方法

//注意要写在session_start方法之前
session_cache_limiter('private, must-revalidate');

PS:Cache-Control消息头域说明
Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存 处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if- cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must- revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:

Public指示响应可被任何缓存区缓存。
Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

 

 

 

 

 

------------------------------------------取出字符串并打印出第一个字母

$a = 'abcdef';
echo $a{0};

 

---------------------------------------------五种方式获取一个文件的扩展名

function getext_1($file) {
return strtolower(trim(substr(strrchr($file, '.'), 1)));
}

function getext_2($file) {
return strtolower(trim(pathinfo($file, PATHINFO_EXTENSION)));
}

function getext_3($file) {
return strtolower(trim(substr($file, strrpos($file, '.')+1)));
}

function getext_4($file) {
return strtolower(trim(array_pop(explode('.', $file))));
}

function gettext_41($str)

{

$arr=explode(".",$str);
return $arr[count($arr)-1];

}



function getext_5($file) {
$tok = strtok($file, '.');
while($tok !== false) {
$return = $tok;
$tok = strtok('.');
}
return strtolower(trim($return));
}

 

 

 

---------------------------------pathinfo() 函数以数组的形式返回文件路径的信息。

语法

pathinfo(path,options)
参数 描述
path 必需。规定要检查的路径。
process_sections

可选。规定要返回的数组元素。默认是 all。

可能的值:

  • PATHINFO_DIRNAME - 只返回 dirname
  • PATHINFO_BASENAME - 只返回 basename
  • PATHINFO_EXTENSION - 只返回 extension

 

 

---------------------------------------显示客户端IP与服务器IP
//客户端
function GetIP(){
    if(!empty($_SERVER["HTTP_CLIENT_IP"])) $cip = $_SERVER["HTTP_CLIENT_IP"];
    else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    else if(!empty($_SERVER["REMOTE_ADDR"])) $cip = $_SERVER["REMOTE_ADDR"];
    else $cip = "";
    preg_match("/[\d\.]{7,15}/", $cip, $cips);
    $cip = $cips[0] ? $cips[0] : 'unknown';
    unset($cips);
    return $cip;
}
echo GetIP();

//服务器端
echo isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '');

 

 

 

---------------------------------------$var2 =& $var1

是一个引用赋值运算,也就是$var2将指向var1所指向的物理内存地址

 

 

-----------------------------------------$GLOBALS和global

使用 global
<?PHP
$temp1 = 1;
$temp2 = 2;
function SumAll()
{
   global $temp1, $temp2;
   $temp2 = $temp1 + $temp2;
}
SumAll();
echo $temp2;
?>
以上脚本的输出将是“3”.在函数中申明了全局变量 $temp1和$temp2,任何变量的所有引用变量都会指向到全局变量.
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成:
使用 $GLOBALS 替代 global
<?PHP
$temp1 = 1;
$temp2 = 2;
function Sum()
{
   $GLOBALS['temp2'] = $GLOBALS['temp1'] + $GLOBALS['temp2'];
}
Sum();
echo $temp2;
?>
在 $GLOBALS 数组中,每一个变量为一个元素,键名对应变量名,值对应变量的内容.$GLOBALS 之所以在全局范围内存在,是因为$GLOBALS 是一个超全局变量.
在PHP中使用全局变量的数量也没有限制。

 

 

 

 

<?php

$GLOBALS['var1'] = 5;

$var2 = 1;

function get_value(){

global $var2;

$var1 = 0;

return $var2++;

}

get_value();1

echo $var1;0

echo $var2;1

?>

 

 

 

------------------------------------explode 和   implode ,join

分隔字符串,可以使用函数 explode ()

$lines = explode ( "\n" , $text );

  foreach ( $lines as $userinfo )

  {

}



连接字符串 implode() 函数
    <? php

        $fruits = array ( 'apple' , 'banana' , 'pear' );

        $tem = join ( "," , $fruits );

        echo $tem ;

      ?>

 

join() 函数把数组元素组合为一个字符串。

join() 函数是 implode() 函数的别名。

 

 


<?php
$arr = array('Hello','World!','Beautiful','Day!');
echo join(" ",$arr);
输出:Hello World! Beautiful Day!
?>

 

 

-------------------------------------------------------------------时间日期处理函数

 

 

strtotime

 

用PHP打印出前一天的时间格式是2006-5-10 22:21:21=========》echo date('Y-m-d H:i:s',strtotime('-1 day');

 

echo date("Y-m-d H:i:s",strtotime("-1 day 8 hours"));

 

 

 

  2. 时间参数和祥细描述:
am: the time is before noon 上午
pm: the time is noon or later 下午
year: one year; for example, “next year” 年,比如“next year”代表明年
month: one month; for example, “last month” 月,比如“last month”代表上一月
fortnight: two weeks; for example, “a fortnight ago” 两周,比如“a fortnight ago”代表两周前
week: one week 周
day: a day 天
hour: an hour 小时
minute: a minute 分钟
min: same as minute 同”minute”
second: a second 秒
sec: same as second 同”second”

    3.相关和顺序说明:
+n/-n:以当前时间算,加个减指定的时间,比如”+1 hour”是指当前时间加一小时
ago:time relative to now; such as “24 hours ago”  以当前时间往前算,比如”24 hours ago”代表“24小时前”
tomorrow: 24 hours later than the current date and time 以当前时间(包括日期和时间)为标准,明天同一时间
yesterday: 24 hours earlier than the current date and time 以当前时间(包括日期和时间)为标准,昨天同一时间
today: the current date and time 当前时间(包括日期和时间)
now: the current date and time 当前时间(包括日期和时间)
last: modifier meaning “the preceding”; for example, “last tuesday” 代表“上一个”,比如“last tuesday”代表“上周二同一时间”
this: the given time during the current day or the next occurrence of the given time; for example, “this 7am” gives the timestamp for 07:00 on the current day, while “this week” gives the timestamp for one week from the current time 当天的指定时间或下面一个时间段的时间戳,比如“this 7am”给出当天7:00的时间戳,而“this week”给出的是从当前时间开始的一整周的时间戳,也就是当前时间(经本人测试:strtotime(’this week’)=strtotime(’now’));
next: modifier meaning the current time value of the subject plus one; for example, “next hour” 当前时间加上指定的时间,比如“next hour”是指当前时间加上一小时,即加3600

first: ordinal modifier, esp. for months; for example, “May first” (actually, it’s just the same as next)
third: see first (note that there is no “second” for ordinality, since that would conflict with the second time value)
fourth: see first
fifth: see first
sixth: see first
seventh: see first
eighth: see first
ninth: see first
tenth: see first
eleventh: see first
twelfth: see first

 

 

------------------------------- 搜索时间间隔

Session_start();
if($_SESSION['ss_time'])
{
    if(time() - $_SESSION['ss_time'] <30)
        echo "搜索时间间隔为30秒,请稍后再使用搜索功能";
    else
        $_SESSION['ss_time']=time();
}else
{
    $_SESSION['ss_time']=time();
}

 

 

 

 

 

-------------------echo print  printf sprintf的区别

print 是函数,echo 更象一条语句,命令

print的用法和C语言很像,所以会对输出内容里的%做特殊解释。

print 还可以这样用
<?
print <<<dND

 

 

echo() 无返回值,与echo 命令相同
print() 有返回值,当其执行失败(比如断线)时返回flase

 

 

printf() 和 sprintf() 类似,均为格式化输出,不同的是前者输出到标准输出,后者输出到变量

 

 

----------------------------------if(strpos($str, 'a') == false) {}这个语句 有什么bug?

当$str的第一个字母是a的时候,strpos($str, 'a')的结果是0
而0 == false 是真,应该使用全等 ===
0 === false 是假

 

---------------------------------页面之间无法传递变量 register_globals

get,post,session在最新的php版本中自动全局变量是关闭的,所以 要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到。当然也可以修改 自动全局变量为开(php.ini改为register_globals = On);考虑到兼容性,还是强迫自己熟悉新的写法比较好。

 

 

------------------------------Win32下apache2用get方法传递中文参数会出错

test.php?a=你好&b=你也好

传递参数是会导致一个内部错误

解决办法:"test.php?a=".urlencode(你好)."&b=".urlencode(你也好)

 

--------------------------win32下的session不能正常工作

php.ini默认的session.save_path = /tmp

这显然是linux下的配置,win32下php无法读写session文件导致session无法使用

把它改成一个绝对路径就可以了,例如session.save_path = c:\windows\temp

 

 

--------------------------显示错误信息

当php.ini的display_errors = On并且error_reporting = E_ALL时,将显示所有的错误和提示,调试的时候最好打开以便纠错,如果你用以前php写法错误信息多半是关于未定义变量的。 变量在赋值以前调用会有提 示,解决办法是探测或者屏蔽。

 

 

-----------------------

include和require的区别

PHP程序执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后PHP会将网页档重新编译,让引入档成为原先网页的一部分。PHP程序执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循环中。

如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出

 

print只能打印出简单类型变量的值(如int,string)
print_r可以打印出复杂类型变量的值(如数组,对象)

 

------------------------------------

    传值与传引用的区别

Call by value (传值):指从主程序将变量内容传递给函数的参数,无论在函数内如何修改、变化该参数值,都不影响主程序原本变量的内容,即使变量名称相同。调用方式:函数名(参数1,参数2);

Call by address (传引用):指从主程序将变量地址传递给函数的参数,在函数内若修改、变化该参数值,会修改主程序原本变量的内容,即主程序与函数存取的是同一变量。调用方式:函数名(&参数1,&参数2);

按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
按引用传递则不需要复制值,对于性能提高很有好处。

 

--------------------------

isset()和empty()的区别

两者都是测试变量用的。

但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的 变量是否为空。如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示。如果一个变量被赋空值,$foo=""或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。

要注销一个变量,可以用 unset($foo)或者$foo=NULL。

 

 

-----------------------------

mysql查询语句包含有关键字

php查询mysql的时候,有时候mysql表名或者列名会有关键字。这时候查询会有错误。例如表名是order,查询时候会出错。简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别,

例如select * from `order` 。

 

 

 

 

---------------------n位随机数

substr(md5(md5(rand())),0,8)

 

 

 

PHP批最取得checkbox的值

1、命名

<input type=’checkbox’ name=’checkbox[]‘ value= $dwmyrow[banzhu] />

2、使用

当计划当作sql指令的一部分时:如果参与控制的字段是数值型的,则

if(! empty( $_POST['checkbox'])) {
$expr = join(”,”,  $_POST['checkbox']);
$sql = “select * from tbl_name where field in ( $expr)”;
}

如果参与控制的字段是数值型的,则

if(! empty( $_POST['checkbox'])) {
$expr = “‘”.join(”‘,’”,  $_POST['checkbox']).”.”;
$sql = “select * from tbl_name where field in ( $expr)”;
}

PHP判断Form表单是否提交

$action= $HTTP_POST_VARS["Button1"];
if( $action==”提交”)
{
//执行表单操作
}
else
{
//读取默认值
}

PHP 获取字符串长度

strlen( $myrow[1])

PHP Url转向

Header(”Location: “. $_SERVER["HTTP_REFERER"]);

PHP超全局对象

<?php
$a = 1;
$b = 2;
function Sum()
{
$GLOBALS["b"] =  $GLOBALS["a"] +  $GLOBALS["b"];
}
Sum();
echo  $b;
?>

PHP 表单取值

如果  mothod=”get”  就用   $_GET["test"]  代替 $test
如果  mothod=”post”  就用   $_POST["test"]  代替 $test

PHP取得当前IP

<?= $HTTP_SERVER_VARS["REMOTE_ADDR"]?>

PHP 取得当前时间

<?php
echo date(”Y-m-d G:i:s”);
?>
date(”Y年m月d日”)
Date (”Y-n-j”)

 

 

 

----------------------------------count

<? echo count ("123") ?>  

 

 

结果为1

 

 

-------------------------------------- printf   sprintf

 printf("%.2d\n", 42);
 printf("%1.2f\n", 42);
 printf("%1.2u\n", 42);



09和9的区别就是不够长度时候使用三个空格和三个0的区别。
宽度不够的时候,例如指定为1、0、01,或者不指定宽度的时候,都是按照数据实际的位数输出。

 

 

 

sprintf() 函数把格式化的字符串写写入一个变量中。

  • %% - 返回百分比符号
  • %b - 二进制数
  • %c - 依照 ASCII 值的字符
  • %d - 带符号十进制数
  • %e - 可续计数法(比如 1.5e+3)
  • %u - 无符号十进制数
  • %f - 浮点数(local settings aware)
  • %F - 浮点数(not local settings aware)
  • %o - 八进制数
  • %s - 字符串
  • %x - 十六进制数(小写字母)
  • %X - 十六进制数(大写字母)

 

 

 

<?php
$str = "Hello";
$number = 123;
$txt = sprintf("%s world. Day number %u",$str,$number);
echo $txt;
//Hello world. Day number 123?>


<?php
$number = 123;
$txt = sprintf("%f",$number);
echo $txt;
//123.000000
?>



<?php
$number = 123;
$txt = sprintf("With 2 decimals: %1\$.2f<br />With no decimals: %1\$u",$number);
echo $txt;


//With 2 decimals: 123.00

//With no decimals: 123?>

分享到:
评论

相关推荐

    php7实践指南配书源代码.

    不过到目前为止,国内有关专门介绍PHP 7应用开发的书籍还很少,本书的目的就是对现有的PHP 7技术进行一个汇总,书中内容是笔者在PHP 7学习和实际工作项目中的心得体会和系统总结,希望能够帮助PHP 7学习者更好地了解...

    10个实用的PHP正则表达式汇总

    本文实例讲述了10个实用的PHP正则表达式汇总,分享给大家供大家参考。具体如下: 正则表达式是程序开发中一个重要的元素,它提供用来描述或匹配文本的字符串,如特定的字符、词或算式等。但在某些情况下,用正则...

    非常实用的PHP常用函数汇总

    主要介绍了非常实用的PHP常用函数,汇总了加密解密、字符串操作、文件操作、SQL注入等函数的实例与用法说明,在PHP项目开发中非常具有实用价值,需要的朋友可以参考下

    php进销存系统源码完全免费(不要分),php进销存管理系统,PHP

    只需简单地录入进货、销售、收款、付款等单据,而系统就自动帮您统计、分析、分类、汇总各类单据信息生成相应的报表。此外,还可随时查询和分析进货、销售、库存、应收、应付、成本、利润等信息,以及随时与每一位...

    (全)传智播客PHP就业班视频完整课程

    非常实用 持之以恒才是王道! 8-11 1.html介绍 html运行原理① 8-11 2.html运行原理② html文件基本结构 html元素和属性 8-11 3.符号实体 url说明 超链接 发送电邮 8-11 4.图像 表格 实际应用-菜谱 课堂练习-课程表 8...

    PHP程序开发范例宝典III

    个实例,每个实例都突出实用性,绝大部分实例都体现了PHP编程人员在实际项目开发过程中总结出的经验技巧。  《PHP程序开发范例宝典》内容充实,实例丰富,特别适于PHP编程人员和广大计算机爱好者学习开发使用,也...

    php获取根域名方法汇总

    主要介绍了php获取根域名方法,实例汇总了常见的php获取根域名的方法,是非常实用的技巧,需要的朋友可以参考下

    PHP防止表单重复提交的几种常用方法汇总

    本文较为详细的汇总了PHP防止表单重复提交的几种常用方法,在PHP程序开发中有着很高的实用价值。具体方法如下: 1. 使用JS让按钮在点击一次后禁用(disable)。采用这种方法可以防止多次点击的发生,实现方式较简单...

    8个PHP程序员常用的功能汇总

    做过PHP开发的程序员应该清楚,PHP中有很多内置的功能,掌握了它们,可以帮助你在做PHP开发时更加得心应手,本文将分享8个开发必备的PHP功能,个个都非常实用,希望各位PHP开发者能够掌握。  1、传递任意数量的函数...

    PHP版本常用的排序算法汇总

    本文给大家汇总介绍了一些php中常见的排序算法的代码,非常实用,有需要的小伙伴可以参考下。

    常见php数据文件缓存类汇总

    主要介绍了常见php数据文件缓存类,实例讲述了php文件缓存与利用memcache来缓存数据的方法,代码封装性好,使用简单,是非常实用的技巧,需要的朋友可以参考下

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    每个实例都经作者精心筛选,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。   本书适合PHP的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合PHP程序员参考、查阅。 目 录 目录:...

    php异常处理方法实例汇总

    主要介绍了php异常处理方法,实例汇总了常见的php异常处理技巧,非常具有实用价值,需要的朋友可以参考下

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    每个实例都经作者精心筛选,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。   本书适合PHP的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合PHP程序员参考、查阅。 目 录 目录:...

    php生成二维码图片方法汇总

    本文给大家汇总介绍了2种php生成二维码图片的方法,一个是利用谷歌api一个是实用phpqrcode类库,都非常方便,有需要的小伙伴可以参考下

Global site tag (gtag.js) - Google Analytics