移动网站开发教程三,php运算符

 更新时间:2016年11月25日 14:57  点击:1739
上一教程我们讲了移动互联网开发的php变量及常量,这一教程我们来讲讲php的运算符,PHP中有丰富的运算符集,它们中大部分直接来自于C语言。

一、PHP的运算符

PHP中有丰富的运算符集,它们中大部分直接来自于C语言。按照不同功能区分,运算符可以分为:算术运算符、字符串运算符、赋值运算符、位运算符、条件运算符,以及逻辑运算符等。当各种运算符在同一个表达式中时,它们的运算是有一定的优先级的。

(1)算术运算

 代码如下 复制代码
+    -   *   /  %  ++ --


(2)字符串运算符

字符串运算符只有一个.(点)就是英文的句号。它可以将字符串连接起来,组成新字符串,也可以将字符串与数字连接,这时类型会自动转换。

 代码如下 复制代码
$a="dawanganban";
$b="123";
echo $a.$b;   //输出结果:dawanganban123


(3)赋值运算符

 代码如下 复制代码
= += -= *= /= %= .=

$a="dawanganban"; 
$a.=1; 
$a.=2; 
$a.=3; 
echo $a.$b;   //输出结果:dawanganban123 


(4)位运算符
 
& | ~ ^ << >>

(5)比较运算符

> < >= <= == != <> === !==

<>:为不等于和!=相同

===:恒等,值相等且类型一致

!==:非恒等,值不相等或类型不一致

 代码如下 复制代码
 
echo 5 == "5"; //true  PHP是弱类型语言(js中的变量类似) 
echo 5 === "5";  //false  完全等于 



(6)逻辑运算

AND(逻辑与) OR(逻辑或) XOR(逻辑异或) &&(逻辑与) ||(逻辑或) !(逻辑非)

 代码如下 复制代码
var_dump(5 && "");   //false 
var_dump(5 && "2"); //true 
var_dump(5 || ""); //true 
var_dump(0 xor 1); //true 
var_dump(0 xor 0); //false 
var_dump(1 xor 1); //false 
上一教程我们讲了移动互联网开发的php变量及常量,这一教程我们来讲讲php的运算符,PHP中有丰富的运算符集,它们中大部分直接来自于C语言。

一、自定义函数

自定义函数就是我们自己定义的函数,在PHP中自定义函数格式如下:

function funname(arg1, arg2, arg3......){

//TODO

return values;

}

 代码如下 复制代码
 <?php 
    function fun($m, $n){ 
        if($m==0 || $n==0){ 
            return 0; 
        }else{ 
            $a=$m*$n; 
            return $a; 
        } 
    } 
     
    $p=2; 
    $h=3; 
    echo $p."*".$h."=".fun($p,$h); 
?>


下面再举一个可变参数的函数

 代码如下 复制代码
<?php 
/*
function fun($m, $n){
    if($m==0 || $n==0){
        return 0;
    }else{
        $a=$m*$n;
        return $a;
    }
}
 
$p=2;
$h=3;
echo $p."*".$h."=".fun($p,$h); */ 
 
 
function fun($m, $n=1, $x=2){ 
    $a=$m*$n*$x; 
    return $a; 

 
$p=2; 
echo fun($p)."<br>";          // 2*1*2 = 4 
echo fun($p, 3)."<br>";       // 2*3*2 = 12 
echo fun($p, 3, 3)."<br>";    // 2*3*3 = 18 
?>

    
 再来看看自定义函数引用传递

 代码如下 复制代码
<?php 
/*  
function fun($m, $n){
    if($m==0 || $n==0){
        return 0;
    }else{
        $a=$m*$n;
        return $a;
    }
}
 
$p=2;
$h=3;
echo $p."*".$h."=".fun($p,$h); 
*/ 
 
/*
function fun($m, $n=1, $x=2){
    $a=$m*$n*$x;
    return $a;
}
 
$p=2;
echo fun($p)."<br>";          // 2*1*2 = 4
echo fun($p, 3)."<br>";       // 2*3*2 = 12
echo fun($p, 3, 3)."<br>";    // 2*3*3 = 18
*/ 
 
function fun(&$n){ 
    $n=$n*$n; 

$p=2; 
fun($p); 
echo $p; 
?> 


二、数组定义赋值

1、数组基本写作格式

简单形式:array(值1, 值2, 值3, .......)

array("aa", 12, true, 2.2, "test", 50); //通过数组下标获得数据

完整形式:array(键1=>值1, 键2=>值2, ......)

array("title"=>"aa", "age"=>20);  //只能通过键名获得数据

2、创建数组的方式

 代码如下 复制代码
//第一种 
$arr1=array(11, 22, 33, "44"); 
//第二种 
$arr2=array('a'=>'11', 'b'=>'22'); 
//第三种 
$arr3[0]='20'; 
$arr3[1]='30'; 


三、数组操作

1、修改

$arr=array(11, 22, 33, 44);

$arr[0]=55;  //数组变为$arr=array(55, 22, 33, 44);

2、删除

$arr=array(11, 22, 33, 44);

unset($arr[0]);    //数组变为$arr=array(22, 33, 44);

3、使用

$arr=array(11, 22, 33, 44);

echo $arr[0];

$arr=array('a'=>11, 'b'=>22, 'c'=>33, 'd'=>44);

echo $arr['b']];

4、遍历

$arr=array('a'=>11, 'b'=>22, 'c'=>33, 'd'=>44);

foreach($arr as $value){ //无键名

echo $value."<br>";

}

foreach($arr as $id=>$value){  //输出键和值

echo $id."__".$value."<br>";

}


四、二维数组

$arr=array(array("1","11","111"), array("2","22","222"));

echo $arr[1][2];

五、数组函数

(1)array_change_key_case(array, case)

array:必需,数组。

case:可选,CASE_LOWER(默认值,小写字母返回数组的键),CASE_UPPER(大写字母返回数组的键)

作用:将数组的所有的 KEY 都转换为大写或小写。

 代码如下 复制代码
<?php 
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Horse"); 
print_r(array_change_key_case($a,CASE_UPPER)); 
?>

结果:Array ( [A] => Cat [B] => Dog [C] => Horse )


(2)array_chunk(array,size,preserve_key)

array:必需。

size:必需,规定每个新数组包括多少元素。

preserve_key:可选,true(保留键名),false(新索引)

作用:把一个数组分成新的数组块。

 代码如下 复制代码
<?php 
//array_chunk(array,size,preserve_key) 
 
$a1=array("a"=>"Cat","b"=>"Dog","c"=>"Horse","d"=>"Cow"); 
print_r(array_chunk($a1,2)); 
 
$a2=array("a"=>"Cat","b"=>"Dog","c"=>"Horse","d"=>"Cow"); 
print_r(array_chunk($a2,2,true)); 
?>  

结果:

Array ( [0] => Array ( [0] => Cat [1] => Dog ) [1] => Array ( [0] => Horse [1] => Cow ) )
Array ( [0] => Array ( [a] => Cat [b] => Dog ) [1] => Array ( [c] => Horse [d] => Cow ) )

.......

像这样的函数很多,可以在用的时候再查,列表如下(php代表第一次出现版本)

 
函数     描述     PHP
array()     创建数组。     3
array_change_key_case()     返回其键均为大写或小写的数组。     4
array_chunk()     把一个数组分割为新的数组块。     4
array_combine()     通过合并两个数组来创建一个新数组。     5
array_count_values()     用于统计数组中所有值出现的次数。     4
array_diff()     返回两个数组的差集数组。     4
array_diff_assoc()     比较键名和键值,并返回两个数组的差集数组。     4
array_diff_key()     比较键名,并返回两个数组的差集数组。     5
array_diff_uassoc()     通过用户提供的回调函数做索引检查来计算数组的差集。     5
array_diff_ukey()     用回调函数对键名比较计算数组的差集。     5
array_fill()     用给定的值填充数组。     4
array_filter()     用回调函数过滤数组中的元素。     4
array_flip()     交换数组中的键和值。     4
array_intersect()     计算数组的交集。     4
array_intersect_assoc()     比较键名和键值,并返回两个数组的交集数组。     4
array_intersect_key()     使用键名比较计算数组的交集。     5
array_intersect_uassoc()     带索引检查计算数组的交集,用回调函数比较索引。     5
array_intersect_ukey()     用回调函数比较键名来计算数组的交集。     5
array_key_exists()     检查给定的键名或索引是否存在于数组中。     4
array_keys()     返回数组中所有的键名。     4
array_map()     将回调函数作用到给定数组的单元上。     4
array_merge()     把一个或多个数组合并为一个数组。     4
array_merge_recursive()     递归地合并一个或多个数组。     4
array_multisort()     对多个数组或多维数组进行排序。     4
array_pad()     用值将数组填补到指定长度。     4
array_pop()     将数组最后一个单元弹出(出栈)。     4
array_product()     计算数组中所有值的乘积。     5
array_push()     将一个或多个单元(元素)压入数组的末尾(入栈)。     4
array_rand()     从数组中随机选出一个或多个元素,并返回。     4
array_reduce()     用回调函数迭代地将数组简化为单一的值。     4
array_reverse()     将原数组中的元素顺序翻转,创建新的数组并返回。     4
array_search()     在数组中搜索给定的值,如果成功则返回相应的键名。     4
array_shift()     删除数组中的第一个元素,并返回被删除元素的值。     4
array_slice()     在数组中根据条件取出一段值,并返回。     4
array_splice()     把数组中的一部分去掉并用其它值取代。     4
array_sum()     计算数组中所有值的和。     4
array_udiff()     用回调函数比较数据来计算数组的差集。     5
array_udiff_assoc()     带索引检查计算数组的差集,用回调函数比较数据。     5
array_udiff_uassoc()     带索引检查计算数组的差集,用回调函数比较数据和索引。     5
array_uintersect()     计算数组的交集,用回调函数比较数据。     5
array_uintersect_assoc()     带索引检查计算数组的交集,用回调函数比较数据。     5
array_uintersect_uassoc()     带索引检查计算数组的交集,用回调函数比较数据和索引。     5
array_unique()     删除数组中重复的值。     4
array_unshift()     在数组开头插入一个或多个元素。     4
array_values()     返回数组中所有的值。     4
array_walk()     对数组中的每个成员应用用户函数。     3
array_walk_recursive()     对数组中的每个成员递归地应用用户函数。     5
arsort()     对数组进行逆向排序并保持索引关系。     3
asort()     对数组进行排序并保持索引关系。     3
compact()     建立一个数组,包括变量名和它们的值。     4
count()     计算数组中的元素数目或对象中的属性个数。     3
current()     返回数组中的当前元素。     3
each()     返回数组中当前的键/值对并将数组指针向前移动一步。     3
end()     将数组的内部指针指向最后一个元素。     3
extract()     从数组中将变量导入到当前的符号表。     3
in_array()     检查数组中是否存在指定的值。     4
key()     从关联数组中取得键名。     3
krsort()     对数组按照键名逆向排序。     3
ksort()     对数组按照键名排序。     3
list()     把数组中的值赋给一些变量。     3
natcasesort()     用“自然排序”算法对数组进行不区分大小写字母的排序。     4
natsort()     用“自然排序”算法对数组排序。     4
next()     将数组中的内部指针向前移动一位。     3
pos()     current() 的别名。     3
prev()     将数组的内部指针倒回一位。     3
range()     建立一个包含指定范围的元素的数组。     3
reset()     将数组的内部指针指向第一个元素。     3
rsort()     对数组逆向排序。     3
shuffle()     把数组中的元素按随机顺序重新排列。     3
sizeof()     count() 的别名。     3
sort()     对数组排序。     3
uasort()     使用用户自定义的比较函数对数组中的值进行排序并保持索引关联。     3
uksort()     使用用户自定义的比较函数对数组中的键名进行排序。     3
usort()     使用用户自定义的比较函数对数组中的值进行排序。     3

移动网站开发教程一我们讲了PHP环境搭建及配置,本教程我们来学习一下php的变量与常量。

一、PHP5.4的基本语法格式

1、PHP的分割符

 代码如下 复制代码
print?
$php=true;  //分号结束语句
if($php){
echo "真";    //分号结束语句
}             //大括号结束语句
?>



2、PHP注释与语法标识

(1)、单行注释    //    来源于C++的注释        # 来源于C语言的注释
(2)、多行注释    /*  */  来源于C语言的注释

3、函数的使用格式

(1) 返回值 函数名()
(2) 返回值 函数名(参数, 参数)
(3) 函数名(参数, 参数, 返回变量)
(4) 返回值 函数名(..   ..)通用符      // PHP5.4的用法

二、PHP5.4的变量与变量的数据类型

变量是由一个美元符“$"开头,”$"后是一个标识符。标识字符串只字母、数字、下划线组成且不可以数字开头。

 代码如下 复制代码

$php=true;  //分号结束语句
if($php){
echo "真";    //分号结束语句
}             //大括号结束语句

$url="blog.csdn.net/dawanganban";  //定义变量
echo $url; 
unset($url);   //删除一个变量url
echo $url;
?>


变量命名的方式

(1)单词之间直接连接

$titlekeyword

(2)单词之间用下划线连接

$title_keyword

(3)单词之间首字母大写(驼峰)

$titleKeyword

PHP的数据类型如下:

(1)字符串(String):单引号(简单引号)或双引号(功能引号)内的内容

(2)整型(integer):   -2^32 < n < 2^32-1

(3)浮点符(float或double)  1.8E+308  (1.8 x 10^308)

(4)布尔型(boolean)     true或false

(5)数组(Array)

(6)对象(Object)

 代码如下 复制代码

class Person{
public $userName="阳光小强";
public function getMsg(){
echo "姓名为:".$this->userName;
}
}
$p=new Person();
$p->getMsg();

?>


(7)资源类型(Resouce)  系统数据资源

资源是一个特殊的数据类型,无法直接获得变量,需要通过专门的函数来访问:

数据库访问必须通过Mysql函数库、Mysqli函数库或PDO函数库实现。

文件访问必须通过FileSystem函数库实现。

目录操作必须通过Directory函数库实现。

图像操作必须通过GD函数库实现。

(8)空值(NULL)

三、PHP5.4的系统常量与自定义常量


常量在程序执行期间无法改变数据,常量的作用域是全局的。常量的命名与变量相似,只是不带“$"符号。一个有效的常量由字母或者下划线开头,一般在PHP中常量都为大写字母而且又分为系统常量和自定义常量。

系统常量范例:

__FILE__ 默认常量,是指PHP程序文件名及路径

__LINE__ 默认常量,是指PHP程序的行数

__CLASS__ 类的名称

在PHP中通过define()函数来定义一个常量,其语法格式为:

bool define(string $name, mixed $value [, bool case_$insensitive])

name:常量的名称

value:常量的值

insensitive:指定常量名称是否区分大小写。如果设置为true则不区分大小写;如果设置为false则区分大小写,默认值为false。

print?
define("COLOR", "red");  //定义一个常量COLOR,值为red
echo COLOR."
";       //输出常量COLOR的值

可变变量

$a="b"       
$$a="123"  //可变变量
echo $b;
输出结果为:123

在字符串中输出变量要使用双引号

$a=50;
//echo '我有$a元人民币";    单引号
echo "我有$a元人民币";
在双引号中可以执行的转意字符更多,比如 n  t  r

判断数据类型

$a="-5";
//$a=-5;
var_dump($a);

从本教程开始我们来学习讲解用php开发移动端互联网技术,移动互联网已经进入百花齐放,开发移动互联网也进入高潮,本本是php移动网站开发教程一,PHP环境搭建及配置。

一、PHP5.4环境搭配基本流程

Apache:Web服务提供者。官网:www.apache.org

PHP: 官网:www.php.net

Mysql: 官网:www.mysql.com

 

移动网站开发教程一,PHP环境搭建及配置

 

二、软件下载

Apache下载地址:http://download.csdn.net/detail/lxq_xsyu/7057423

PHP下载地址:http://download.csdn.net/detail/lxq_xsyu/7057401

Mysql下载地址:http://download.csdn.net/detail/lxq_xsyu/6468461

三、环境搭建

(1)Apache安装

 

移动网站开发教程一,PHP环境搭建及配置

 

安装成功

 

移动网站开发教程一,PHP环境搭建及配置

 

(2)解压PHP5.4

 

移动网站开发教程一,PHP环境搭建及配置

 

(3)配置Apache的httpd.conf文件

 

移动网站开发教程一,PHP环境搭建及配置

 

Apache安装目录

ServerRoot "D:/Apache Software Foundation"

监听端口

#Listen 12.34.56.78:80

Listen 80

载入PHP组件

LoadModule php5_module "D:/php54/php5apache2_2.dll"

服务器名称

#ServerName www.meritit.com:80

文件根目录

DocumentRoot "D:/Apache Software Foundation/htdocs"

权限文件夹

索引(默认访问主页)

DirectoryIndex index.html

 

错误日志

ErrorLog "logs/error.log"

访问日志

CustomLog "logs/access.log" common

配置解析php

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

AddType application/x-httpd-php .php

错误类型

#ErrorDocument 500 "The server made a boo boo."

#ErrorDocument 404 /missing.html

#ErrorDocument 404 "/cgi-bin/missing_handler.pl"

#ErrorDocument 402 http://www.meritit.com/subscription_

四、测试是否搭建成功

新建a.php

<?php

phpinfo();

?>

 

移动网站开发教程一,PHP环境搭建及配置

 

可以看到找不到php的配置文件,我们在apache配置文件中指定一下php的配置文件目录

PHPIniDir "D:/php54"

 

移动网站开发教程一,PHP环境搭建及配置

 

五、配置多站点访问

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

去掉上面注释(打开虚拟主机配置文件)

在httpd-vhosts.conf中配置了两个站点如下

DocumentRoot "D:/Apache Software Foundation/a_com"

ServerName 127.0.0.2

ServerAlias www.dummy-host.meritit.com

ErrorLog "logs/dummy-host.meritit.com-error.log"

CustomLog "logs/dummy-host.meritit.com-access.log" common

 

DocumentRoot "D:/Apache Software Foundation/b_com"

ServerName 127.0.0.3

ErrorLog "logs/dummy-host2.meritit.com-error.log"

CustomLog "logs/dummy-host2.meritit.com-access.log" common

 

注意:一旦配置了虚拟主机,前面配置的DocumentRoot就无效了。

D:Apache Software Foundationa_coma.php

<?php

echo "aaaaaa";

?>

D:Apache Software Foundationb_comb.php

<?php

echo "bbbbbb";

?>

注意:要修改权限文件夹目录

访问结果:

 

移动网站开发教程一,PHP环境搭建及配置

 

 

移动网站开发教程一,PHP环境搭建及配置

 

 

移动网站开发教程一,PHP环境搭建及配置

 

下文整理了一些在php 应用开发中常用到的一些函数了,这些函数有字符操作,文件操作及其它的一些操作了,下面给各位整理一下。

1、PHP加密解密

PHP加密和解密函数可以用来加密一些有用的字符串存放在数据库里,并且通过可逆解密字符串,该函数使用了base64和MD5加密和解密。
 

 代码如下 复制代码
function encryptDecrypt($key, $string, $decrypt){
    if($decrypt){
        $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12");
        return $decrypted;
    }else{
        $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
        return $encrypted;
    }
}

使用方法如下:
 
//以下是将字符串“Helloweba欢迎您”分别加密和解密
//加密:
echo encryptDecrypt('password', 'Helloweba欢迎您',0);
//解密:
echo encryptDecrypt('password', 'z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk=',1);

2、PHP生成随机字符串

当我们需要生成一个随机名字,临时密码等字符串时可以用到下面的函数:
 

 代码如下 复制代码
function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $randomString;
}
使用方法如下:
 
echo generateRandomString(20);

3、PHP获取文件扩展名(后缀)

以下函数可以快速获取文件的扩展名即后缀。
 

 代码如下 复制代码
function getExtension($filename){
  $myext = substr($filename, strrpos($filename, '.'));
  return str_replace('.','',$myext);
}
使用方法如下:
 
$filename = '我的文档.doc';
echo getExtension($filename);

4、PHP获取文件大小并格式化

以下使用的函数可以获取文件的大小,并且转换成便于阅读的KB,MB等格式。
 

 代码如下 复制代码
function formatSize($size) {
    $sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
    if ($size == 0) { 
        return('n/a'); 
    } else {
      return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i]); 
    }
}
使用方法如下:
 
$thefile = filesize('test_file.mp3');
echo formatSize($thefile);

5、PHP替换标签字符

有时我们需要将字符串、模板标签替换成指定的内容,可以用到下面的函数:

 代码如下 复制代码
 
function stringParser($string,$replacer){
    $result = str_replace(array_keys($replacer), array_values($replacer),$string);
    return $result;
}
使用方法如下:
 
$string = 'The {b}anchor text{/b} is the {b}actual word{/b} or words used {br}to describe the link {br}itself';
$replace_array = array('{b}' => '<b>','{/b}' => '</b>','{br}' => '<br />');
 
echo stringParser($string,$replace_array);

6、PHP列出目录下的文件名

如果你想列出目录下的所有文件,使用以下代码即可:
 

 代码如下 复制代码
function listDirFiles($DirPath){
    if($dir = opendir($DirPath)){
         while(($file = readdir($dir))!== false){
                if(!is_dir($DirPath.$file))
                {
                    echo "filename: $file<br />";
                }
         }
    }
}
使用方法如下:
 
listDirFiles('home/some_folder/');

7、PHP获取当前页面URL

以下函数可以获取当前页面的URL,不管是http还是https。
 

 代码如下 复制代码
function curPageURL() {
    $pageURL = 'http';
    if (!empty($_SERVER['HTTPS'])) {$pageURL .= "s";}
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
    return $pageURL;
}
使用方法如下:
 
echo curPageURL();

8、PHP强制下载文件

有时我们不想让浏览器直接打开文件,如PDF文件,而是要直接下载文件,那么以下函数可以强制下载文件,函数中使用了application/octet-stream头类型。
 

 代码如下 复制代码
function download($filename){
    if ((isset($filename))&&(file_exists($filename))){
       header("Content-length: ".filesize($filename));
       header('Content-Type: application/octet-stream');
       header('Content-Disposition: attachment; filename="' . $filename . '"');
       readfile("$filename");
    } else {
       echo "Looks like file does not exist!";
    }
}
使用方法如下:
 
download('/down/test_45f73e852.zip');

9、PHP截取字符串长度

我们经常会遇到需要截取字符串(含中文汉字)长度的情况,比如标题显示不能超过多少字符,超出的长度用...表示,以下函数可以满足你的需求。
 

 代码如下 复制代码
/*
 Utf-8、gb2312都支持的汉字截取函数
 cut_str(字符串, 截取长度, 开始长度, 编码);
 编码默认为 utf-8
 开始长度默认为 0
*/
function cutStr($string, $sublen, $start = 0, $code = 'UTF-8'){
    if($code == 'UTF-8'){
        $pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/";
        preg_match_all($pa, $string, $t_string);
 
        if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
        return join('', array_slice($t_string[0], $start, $sublen));
    }else{
        $start = $start*2;
        $sublen = $sublen*2;
        $strlen = strlen($string);
        $tmpstr = '';
 
        for($i=0; $i<$strlen; $i++){
            if($i>=$start && $i<($start+$sublen)){
                if(ord(substr($string, $i, 1))>129){
                    $tmpstr.= substr($string, $i, 2);
                }else{
                    $tmpstr.= substr($string, $i, 1);
                }
            }
            if(ord(substr($string, $i, 1))>129) $i++;
        }
        if(strlen($tmpstr)<$strlen ) $tmpstr.= "...";
        return $tmpstr;
    }
}
使用方法如下:
 
$str = "jQuery插件实现的加载图片和页面效果";
echo cutStr($str,16);

10、PHP获取客户端真实IP

我们经常要用数据库记录用户的IP,以下代码可以获取客户端真实的IP:
 

 代码如下 复制代码
//获取用户真实IP
function getIp() {
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
        $ip = getenv("HTTP_CLIENT_IP");
    else
        if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
            $ip = getenv("HTTP_X_FORWARDED_FOR");
        else
            if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
                $ip = getenv("REMOTE_ADDR");
            else
                if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
                    $ip = $_SERVER['REMOTE_ADDR'];
                else
                    $ip = "unknown";
    return ($ip);
}
使用方法如下:
 
echo getIp();

11、PHP防止SQL注入

我们在查询数据库时,出于安全考虑,需要过滤一些非法字符防止SQL恶意注入,请看一下函数:
 

 代码如下 复制代码
function injCheck($sql_str) { 
    $check = preg_match('/select|insert|update|delete|'|/*|*|../|./|union|into|load_file|outfile/', $sql_str);
    if ($check) {
        echo '非法字符!!';
        exit;
    } else {
        return $sql_str;
    }
}

使用方法如下:
 
echo injCheck('1 or 1=1');

12、PHP页面提示与跳转

我们在进行表单操作时,有时为了友好需要提示用户操作结果,并跳转到相关页面,请看以下函数:
 

 代码如下 复制代码
function message($msgTitle,$message,$jumpUrl){
    $str = '<!DOCTYPE HTML>';
    $str .= '<html>';
    $str .= '<head>';
    $str .= '<meta charset="utf-8">';
    $str .= '<title>页面提示</title>';
    $str .= '<style type="text/css">';
    $str .= '*{margin:0; padding:0}a{color:#369; text-decoration:none;}a:hover{text-decoration:underline}body{height:100%; font:12px/18px Tahoma, Arial,  sans-serif; color:#424242; background:#fff}.message{width:450px; height:120px; margin:16% auto; border:1px solid #99b1c4; background:#ecf7fb}.message h3{height:28px; line-height:28px; background:#2c91c6; text-align:center; color:#fff; font-size:14px}.msg_txt{padding:10px; margin-top:8px}.msg_txt h4{line-height:26px; font-size:14px}.msg_txt h4.red{color:#f30}.msg_txt p{line-height:22px}';
    $str .= '</style>';
    $str .= '</head>';
    $str .= '<body>';
    $str .= '<div class="message">';
    $str .= '<h3>'.$msgTitle.'</h3>';
    $str .= '<div class="msg_txt">';
    $str .= '<h4 class="red">'.$message.'</h4>';
    $str .= '<p>系统将在 <span style="color:blue;font-weight:bold">3</span> 秒后自动跳转,如果不想等待,直接点击 <a href="{$jumpUrl}">这里</a> 跳转</p>';
    $str .= "<script>setTimeout('location.replace('".$jumpUrl."')',2000)</script>";
    $str .= '</div>';
    $str .= '</div>';
    $str .= '</body>';
    $str .= '</html>';
    echo $str;
}
使用方法如下:
 
message('操作提示','操作成功!','http://www.111cn.net/');

13、PHP计算时长

我们在处理时间时,需要计算当前时间距离某个时间点的时长,如计算客户端运行时长,通常用hh:mm:ss表示。
 

 代码如下 复制代码
function changeTimeType($seconds) {
    if ($seconds > 3600) {
        $hours = intval($seconds / 3600);
        $minutes = $seconds % 3600;
        $time = $hours . ":" . gmstrftime('%M:%S', $minutes);
    } else {
        $time = gmstrftime('%H:%M:%S', $seconds);
    }
    return $time;
}
使用方法如下:
 
$seconds = 3712;
echo changeTimeType($seconds);
[!--infotagslink--]

相关文章

  • php漏洞之跨网站请求伪造与防止伪造方法

    今天我来给大家介绍在php中跨网站请求伪造的实现方法与最后我们些常用的防止伪造的具体操作方法,有需要了解的朋友可进入参考。 伪造跨站请求介绍 伪造跨站请求...2016-11-25
  • 安卓手机app添加支付宝支付开发教程

    支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • mac下Apache + MySql + PHP搭建网站开发环境

    首先为什不自己分别搭建Apache,PHP和MySql的环境呢?这样自己可以了解更多知识,说起来也更酷。可也许因为我懒吧,我是那种“既然有现成的,用就是了”的人。君子生非异也,善假于物也。两千年前的荀子就教导我们,要善于利用工具...2014-06-07
  • PHP扩展开发教程(总结)

    PHP是一种解释型的语言,对于用户而言,我们精心的控制内存意味着easier prototyping和更少的崩溃!当我们深入到内核之后,所有的安全防线都已经被越过,最终还是要依赖于真正有责任心的软件工程师来保证系统的稳定运行。1、线...2015-11-08
  • c#的异或运算符介绍

    这篇文章介绍了c#的异或运算符,有需要的朋友可以参考一下...2020-06-25
  • 轻松学习C#的运算符

    轻松学习C#的运算符,对C#的运算符感兴趣的朋友可以参考本篇文章,帮助大家更灵活的运用C#的运算符。...2020-06-25
  • php实现网站留言板功能

    我要实现的就是下图的这种样式,可参考下面这两个网站的留言板,他们的实现原理都是一样的畅言留言板样式:网易跟帖样式:原理 需要在评论表添加两个主要字段 id 和 pid ,其他字段随意添加,比如文章id、回复时间、回复内容、...2015-11-08
  • C#中38个常用运算符的优先级的划分和理解

    这只我自己在学C#中的一些总结,其中对于各级的划分方式、各操作符的优先级的理解并不见得正确,只是自己的看法,拿出来与大家分享...2020-06-25
  • 网站广告怎么投放最好?首屏广告投放类型优化和广告位布局优化的案例

    网站广告怎么投放最好?一个网站中广告位置最好的是哪几个地方呢,许多的朋友都不知道如何让自己的网站广告收效最好了,今天我们就一起来看看吧。 在说到联盟优化前,...2016-10-10
  • R语言运算符知识点讲解

    在本篇文章里小编给大家分享了一篇关于R语言运算符知识点讲解内容,有兴趣的朋友们可以参考下。...2021-05-06
  • C++编程中的或||、与&&、非!逻辑运算符基本用法整理

    这篇文章主要介绍了C++中的或||、与&&、非!逻辑运算符基本用法整理,是C++入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
  • JS不要再到处使用绝对等于运算符了

    这篇文章主要介绍了JS不要再到处使用绝对等于运算符了,对此感兴趣的同学,可以参考下...2021-05-01
  • C#编程自学之运算符和表达式

    这篇文章主要介绍了C#运算符和表达式,这是自学C#编程的第五篇,希望对大家的学习有所帮助。...2020-06-25
  • 个人站长做网站应该考虑的一些问题

    个人网站建设应该考虑哪些问题呢?这个问题我们先在这里不说,下文会一一列出来,希望这些建义能帮助到各位同学哦。 我相信VIP成员里面有很多站长,每个人几乎都拥有一个...2016-10-10
  • 分享利用论坛签名提升网站权重

    分享一篇利用论坛签名提升网站权重的方法,在推广中论坛签名也是一种不错的外链推荐的方法,但现在权重越来越低了,有需要的朋友可以看看。 话说有一天在站长网上面看...2016-10-10
  • C#运算符重载用法实例分析

    这篇文章主要介绍了C#运算符重载用法,实例分析了C#中运算符重载的基本实现与使用技巧,需要的朋友可以参考下...2020-06-25
  • 如何提高网站pv 吸引力

    关于如何提高网站的吸引呢,下面我们列出了5点,让你的网站pv大大的提升哦   1、建立一个清晰的网站地图   一个清晰的网站地图可以给你的用户提供一个简介明了的...2017-07-06
  • 如何有效提高网站的用户回头率

    第一,网站的内容;请各位站长朋友不要一天到晚只想着出什么好的绝招来推广网站,却忽略了网站的内容;其实网站的内容是极为重要的,因为这是你的本,你的根!网站的内容只有不断...2017-07-06
  • 网站排名提升后稳定排名方法

    一、靠前排名成搜索关注的对象   从搜索引擎的角度考虑一下,就不难理解为什么搜索引擎对排名在首页的网站那么慎重,甚至对新进排名在首页的一些网站进行为期一个多月的...2016-10-10