Just do it

php学习笔记 不指定

even , 2012/05/04 16:24 , IT技术 » Shell/PHP , 评论(0) , 阅读(828) , Via 本站原创
   isset() 变量是否存在
    boolean empty() 判断变量的值是否为非空或非0
    //例子:
    $arr = array();//只要变量的右边有等号,且不为null,isset()结果为true
    //几种代表假的情况:1,整形0; 2,浮点型0.0; 3,字符串''"、字符串“0”;4,空数组;5,没有成员的对象;6,NULL;
    echo isset($arr);//结果为1
    echo empty($arr);//结果为1
    var_dump(isset($arr));//结果为bool(true)
    //特别注意:字符串“0.0”不代表假
    void unset() 销毁变量
    //常量一旦定义,就无法销毁,常量只能是四种标量类型
    header('Content-Type: text/html; charset=utf-8');
    method_exists($obj, $method)    判断对象的方法是否可用
    file_exists($file)  判断文件是否存在
    function_exists();
    class_exists($class_name);
    gettype();获取数据类型
    set_magic_quotes_runtime() 0 for off, 1 for on 当遇到反斜杆、单引号,将会自动加上一个反斜杆,保护系统和数据库的安全
    ini_set(,);
  
数据类型转换
    强制转换
        $i = 1.0;
        $j = (int)$i;//此种方法不改变本身的类型,而是生成一种新的类型
        var_dump($i);// 结果  float(1.0)
        var_dump($j);//  结果 int(1)
    settype
        $i = 1;
        settype($i,'float');//直接将本身的类型转换为一种新的类型
        var_dump($i);  //结果 float(1)
    floatval //此种方法不改变本身的类型,而是生成一种新的类型
        $i = 1;
        $j = floatval ($i)
  
  
安全
    function strReplace($str)
    {
      $strResult = $str;
      if(!get_magic_quotes_gpc())//判断设置是否开启
      {
        $strResult = addslashes($strResult);//转换sql语句特殊字符
      }
      return $strResult;
    }
  
  
    function quotes($content)
    {
        //如果magic_quotes_gpc=Off,那么就开始处理
        if (!get_magic_quotes_gpc())
        {
            //判断$content是否为数组
            if (is_array($content))
            {
                //如果$content是数组,那么就处理它的每一个单无
                foreach ($content as $key=>$value)
                {
                    $content[$key] = addslashes($value);
                }
            }
            else
            {
                //如果$content不是数组,那么就仅处理一次
                addslashes($content);
            }
        }
        //返回$content
        return $content;
    }
  
  
编码转换
    1.string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )   //将字符串的编码由from_encoding转为to_encoding
    2.iconv(string incharset,string outcharset,string str);//将字符串str的编码由incharset转为outcharset
    如果页面显示过程中出现了乱码,该如何解决
    //第一:检查页面显示的编码;header("content-type:text/html;charset=gbk");
    //
    //第二:检查数据库的编码;方法:mysql_query("set names gbk");
    //第三:检查文件的保存编码;
    //第四:使此三种编码保持一致
  
  
时间
    date_default_timezone_set("PRC");
    date_default_timezone_set("Asia/ShangHai");
    date_default_timezone_set("Asia/Hong_Kong");
    date('U'); //取得当前时间戳
    date("Y-m-d H:i:s");//按照国际标准输出格式化的日期
    //y:代表两位的年份;Y:代表四位数字的年份
    //m:有前导零的数字月份;M:三个字母表示月份;n:数字表示月份没有前导零;F:用英文完整的表示月份
    //d:有前导零的天数;j:无前导零的天数;D:星期中的第几天,如Mon到Sun
    //H:24小时格式有前导零;h:12小时格式,有前导零;G:24小时格式,无前导零;g:12小时格式,无前导零
    //i:有前导零的分钟数
    //s:有前导零的秒数
    //a:小写的上下午;A:大写的上下午
    //z:年中的第几天;w:星期中的第几天,有数字表示
    date("Y-m-d H:i:s",int timestamp);//将时间戳转为日期时间格式
    time();//取得当前时间戳
    mktime();   //无参数时取得当前的时间戳
    date("Y-m-d H:i:s",time()+3600);
  
    int strtotime(string time[, int now])     //将任何英文文本的日期时间描述解析为 Unix 时间戳
    //例子:date("Y-m-d H:i:s",strtotime('+8 hours'));
    //当前时间加8个小时
    echo strtotime("now"), "\n";                  //取得当前时间戳
    echo strtotime("10 September 2000"), "\n";   //取得2000-9-10的时间戳
    echo strtotime("+1 day"), "\n";             //取得一天后的时间戳
    echo strtotime("+1 week"), "\n";           //取得一周后的时间戳
    
    //取当前时间戳的四种方法:
    1.date("U");
    2.time();
    3.mktime();
    4.strtotime('now');
  
  
    getdate(int timestamp)   //将时间戳转为日期
    ini_set('date.timezone', 'PRC');
    msec sec microtime() 以秒返回时间戳 explode(' ', microtime())

  
oop(面向对象)
    面向对象的概念:使编程的代码更简洁,更易于维护,具有较强的代码重用性
    //在类的外部访问类的属性和方法
    1.对象名->方法名;对象名->属性
    类的构成:有属性和方法构成
    类:用来描述一类具有相似属性和方法的事物
    //注意:类的声明必须用缺省的类型来修饰;类的属性声明的时候必须用public或var;
    //在PHP中没有方法的重载,其实在PHP中所说的重载就是重写
    //在类的内部访问类的属性和方法
    $this->方法名();$this->属性;//$this指当前对象,也就是本对象的调用
  
    类的三大特征:
    1. 封装性:
    也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。
  
    2. 继承性:
    就是子类自动继承其父级类中的属性和方法,并可以可以添加新的属性和方法或者对部分属性和方法进行重写。继承增加了代码的可重用性。
    //不能继承私有的属性
  
    3. 多态性:
    子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。
    于是多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,这种技术就是多态性。
  
    访问修饰符:
    public:所有的外部类都可以访问
    protected:本类和子类可以访问,注意//且只能在类的内部使用,不能在类的外部使用
    private:只能在本类中访问
    //注意:子类要覆盖父类的方法时,子类的访问权限必须高于父类
    构造方法:与类同名,对象产生的时候自动调用,用来初始化成员属性,没有返回值,同一类中只能有一个构造方法,因为在PHP中没有重载。但__construct和与类同名的构造方法可以共存。在PHP5中有__construct就不会执行与类同名的构造方法
    //如果子类有构造方法,不会执行父类的构造方法
    
    关键字:
    1.final:只能用来声明类和方法;声明的类不能被继承,方法不能被重写
    2.static:用来描述属性和方法,只属于类,不属于类的实例,当类加载的时候产生;静态成员使用类名::成员来访问;类名::方法名();调用方法,也可以类名::方法名()来调用;
    注意//当通过类::方法名()调用方法时,方法里面不能有$this关键字
    //对于方法来说,有无static修饰都一样
    //静态的方法里面不能有非静态的成员。因为静态属于类,非静态属于对象
    3.self:代表本类
    4.const:类里面定义属性和常量的关键字,一旦被赋值就不能改变,只能修饰属性
    //是类里面的常量,不属于对象,声明的时候不能有$
    访问方式:类名::常量名,不能通过对象来调用
    5.instanceof:判断当前对象属于那一个类的特定实例
    5.parent:代表父类
    抽象类和接口
    1.抽象方法:只有方法的声明,没有方法的实现体,用abstract来修饰
    2.抽象类:如果类中至少有一个抽象方法时,该类就是抽象类
    //注意:抽象类不能实例化,无构造方法,子类必须实现父类所有为实现的方法;抽象类中可以有普通方法和普通属性,允许有抽象方法,支持单继承。
    3.接口:所有的方法都是抽象方法,用interface声明;接口里面只能有抽象方法和常量
    //注意:接口不能继承类,可以继承多个接口,子类必须实现接口所有的方法,继承的接口中不能有同名的方法,接口中的抽象方法不能用abstract来修饰,接口不能实例化
    魔术方法
    __construct()             当实例化一个对象的时候,这个对象的这个方法首先被调用。
    __destruct()              当删除一个对象或对象操作终止的时候,调用该方法。
    __get()                      当试图读取一个并不存在的属性的时候被调用。
    __set()                      当试图向一个并不存在的属性写入值的时候被调用。
    __call()                      当试图调用一个对象并不存在的方法时,调用该方法。
    __toString()               当打印一个对象的时候被调用
    __clone()                   当对象被克隆时,被调用
    __isset()                    判断对象里的私有属性是否存在是自动调用
    __unset()                   删除私有属性是自动调用
    __autoload($classname)   调用不存在的类时自动加载该类,注意//在类的外部使用  
    __sleep()                   对象序列化是自动调用,返回数组
    __wakeup()               对象反序列化时自动调用
  

系统常量
    __FILE__ 当前文件名
    __LINE__ 当前行数
    __FUNCTION__ 当前函数名
    __CLASS__ 当前类名
    __METHOD__ 当前对象的方法名
    PHP_OS 当前系统
    PHP_VERSION php版本
    DIRECTORY_SEPARATOR 根据系统决定目录的分隔符 /\
    PATH_SEPARATOR 根据系统决定环境变量的目录列表分隔符 ; :
    E_ERROR 1
    E_WARNING 2
    E_PARSE 4
    E_NOTICE 8
    M_PI    3.141592
    $_SERVER
    $_ENV 执行环境提交至脚本的变量
    $_GET
    $_POST
    $_REQUEST
    $_FILES
    $_COOKIE
    $_SESSION
    $GLOBALS   $s=1;echo $GLOBALS['s'];变量首先有值
    global $a;先定义后赋值
  
  
  
输出
    echo   //Output one or more strings
    print    //Output a string
    print_r()  //打印关于变量的易于理解的信息。
    var_dump()  //打印变量的相关信息
    var_export()  //输出或返回一个变量的字符串表示
    printf("%.1f",$num)  //Output a formatted string
    sprintf()  //Return a formatted string
  
  
错误处理
    @1/0
    error_reporting(E_ALL) 显示所有错误
    error_reporting(0)//屏蔽所有的错误
    trigger_error("Cannot divide by zero", E_USER_ERROR);
    try
    {
        throw new Exception("执行失败");
    }
    catch (Exception $ex)
    {
        echo $ex;
    }
  
    error_reporting(E_ERROR | E_WARNING | E_PARSE); 用来配置错误信息回报的等级
  
  
字符串处理
    string trim("eee ") trim ('ffffe','e')  //默认情况下去除空格,有第二个参数时,去除第二个参数字符。ltrim rtrim 去除前导和后导空格
    array explode(".", "fff.ff.f")  //按指定字符将字符串切割成一个数组
    string implode(".", $array)  //别名:join   把数组值按指定字符连接成一个字符串
    array str_split("eeeeeeee",4)   //按长度切割字符串,形成(字符串长度/4)个数组
    //该例子的结果$arr[0]="eeee";$arr[1]="eeee";
    array split("-","fff-ff-f")   //按指定字符切割字符串,形成一个数组
    int strlen('ffffffff')   //取字符长度
    string substr ( string $string , int $start [, int $length ] )
        substr($a,-2, 2)   //截取字符
    int substr_count($text, 'is')   //统计字符串某字符出现的次数
    string strstr($text, 'h')          //返回某字符第一次出现的位置到结尾的字符串   //别名:strchr
    int strpos($text, 'h') //第一次出现h的位置
    strrpos();  //最后一次出现h的位置
    strrchr('aa.jpg','.'); .jpg
    str_replace('a', 'ttt', $t) //把$t里的'a'替换为'ttt'
    strtr($t,'is','pef') 把$t中i替换成p,s替换成e,f被忽略
        strtr("hi all, I said hello", array("hello" => "hi")) 把'hello'转换成'hi'
    string md5_file('1.txt',false) 文件数据md5加密
    int strcmp(string str1, string str2) 字符串比较
    int strcasecmp(string str1, string str2) 忽略大小写
    string str_pad($i, 10, "-=", STR_PAD_LEFT) 在原字符左边补'-=',直到新字符串长度为10
        STR_PAD_RIGHT
        STR_PAD_BOTH
    string str_repeat('1', 5) 重复5个1
    void parse_str('id=11'); echo $id; 将字串符解析为变量
    array preg_grep("/^(\d+)?\.\d+$/", array(11.2,11,11.2)) 匹配数据
    array preg_split ("/[\s,]+/", "hypertext language,programming"); 按指定的字符切割
    array pathinfo(string path [, int options]) 返回文件路径的信息,dirname,basename,extension,
    string basename ( string path [, string suffix] ) 返回路径中的文件名部分
    string dirname ( string path )  $_SERVER[PHP_SELF]  返回路径中的目录部分
    string nl2br("foo isn't\n bar") "foo isn't
bar" 把换行转成

    string chr ( int ascii )  chr(97) ---> a
    int ord('a')  97
    mixed str_word_count ( string string [, int format [, string charlist]] )
    string str_shuffle ('abc') //打乱字符串顺序
    string strrev($str) *         翻转一个字符串
    string strtolower($str) *     将字符串 $str 的字符全部转换为小写的
    string strtoupper($str) *     将字符串 $str 的字符全部转换为大写的
    string ucfirst ($str)   *       将字符串 $str 的第一个单词的首字母变为大写。
    string ucwords($str)    *        将字符串 $str 的每个单词的首字母变为大写。
  
    string addslashes("I'm") I\'m  这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)//它是一种看不到的特殊字符,转义后是\0
            get_magic_quotes_gpc()
    string stripcslashes("I\'m") I'm  //将用addslashes()函数处理后的字符串返回原样
    strip_tags("

tt

", '

') //去除html、xml、php标记,第二个参数用来保留标记
    string urlencode(string str)
    string urldecode(string str)
    string htmlspecialchars("Test", ENT_QUOTES) 转换特殊字符为HTML字符编码
        <a href='test'>Test</a>
        ENT_COMPAT –对双引号进行编码,不对单引号进行编码
        ENT_QUOTES –对单引号和双引号进行编码
        ENT_NOQUOTES –不对单引号或双引号进行编码
    string htmlentities('

ff

', ENT_QUOTES) 转换特殊字符为HTML字符编码,中文会转成乱码
  
  
数组处理
    int count( mixed var [, int mode] ) 别名:sizeof() 取数组长度
    string implode(".", $array)  别名:join   把数组值数据按指定字符连接起来
    array explode(".", "fff.ff.f") 按指定字符切割
    array range(0, 6, 2) 返回数组 array(0,2,4,6) 第一个参数为起使数,第二个参数为结束数,第三个参数为数据增加步长
    void unset ( mixed var [, mixed var [, ...]] )
    array array_pad ($a, 5, 's')用's'将数组填补到指定长度
    bool shuffle ( array $array )  将数组打乱
    mixed array_rand ( array input [, int num_req] )   //从数组中随机取出一个或多个单元的索引或键名
    array array_count_values ( array input )统计数组中所有的值出现的次数
    array array_combine ( array keys, array values ) 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
    bool array_key_exists ( mixed key, array search )    //检查给定的键名或索引是否存在于数组中
    mixed array_search ( mixed needle, array haystack [, bool strict] )在数组中搜索给定的值,如果成功则返回相应的键名
    bool is_array ( mixed var )
    bool in_array ( mixed needle, array haystack [, bool strict] )检查数组中是否存在某个值
    number array_sum ( array array )计算数组中所有值的和
    array array_unique ( array array )移除数组中重复的值
  
    mixed array_shift ( array &array )将数组开头的单元移出数组
    int array_unshift ( array &array, mixed var [, mixed ...] )在数组开头插入一个或多个单元
    int array_push($a, "3", 1) 把'3'、'1'压入$a,将一个或多个单元压入数组的末尾(入栈),第二个参数开始就是压入的数据
    mixed array_pop ( array &array )将数组最后一个单元弹出(出栈)
  
    mixed reset ( array &array )将数组的内部指针指向第一个单元
    mixed current ( array &array ) 返回数组中的当前单元 值
    mixed next ( array &array )
    mixed prev ( array &array )
    mixed end ( array &array ) 返回数组中的最后一个单元 值
    mixed key ( array &array ) 返回数组中的当前个单元 键
  
    array array_keys ( array input [, mixed search_value [, bool strict]] ) 返回数组中所有的键名
    array array_values ( array input ) 返回数组中所有的值
    array array_splice ( array $input, int offset [, int length [, array replacement]] ) 把数组中的一部分去掉并用其它值取代
    array array_merge ( array array1 [, array array2 [, array ...]] )合并一个或多个数组
    array array_flip ( array trans )交换数组中的键和值
    int extract( array var_array [, int extract_type [, string prefix]] ) 从数组中将变量导入到当前的符号表
    array compact ( mixed varname [, mixed ...] ) 建立一个数组,包括变量名和它们的值
    bool sort ( array &array [, int sort_flags] )从最低到最高重新安排
    bool natsort($a)    用“自然排序”算法对数组排序
    bool rsort ( array &array [, int sort_flags] )对数组进行逆向排序(最高到最低)
    bool asort ( array &array [, int sort_flags] )对数组进行排序并保持索引关系
    bool arsort ( array &array [, int sort_flags] ) 对数组进行逆向排序并保持索引关系
    bool ksort ( array &array [, int sort_flags] )对数组按照键名排序
    bool krsort ( array &array [, int sort_flags] )对数组按照键名逆向排序
  
    array array_filter ( array input [, callback callback] ) 用回调函数过滤数组中的单元
    bool array_walk ( array &array, callback funcname [, mixed userdata] ) 对数组中的每个成员应用用户函数
    array array_map ( callback callback, array arr1 [, array ...] )将回调函数作用到给定数组的单元上
  
    array array_fill ( int start_index, int num, mixed value ) 用给定的值填充数组
        array_fill(5, 3, 'a')-->array(5=>'a',6=>'a',7=>'a')
    array array_chunk ( array input, int size [, bool preserve_keys] )将一个数组分割成多个
详情请参阅附件


转自:http://mrcelite.blog.51cto.com/2977858/745535

php图片计数器 不指定

even , 2012/05/04 10:15 , IT技术 » Shell/PHP , 评论(0) , 阅读(889) , Via 本站原创
if (!$f=fopen("num.txt","r"))
{
        echo "文件不存在!";
        $num = 0;
}else{
        $num=fgets($f,10); 获得9
        fclose($f);
     }

$num++;

$ff = fopen("num.txt","w");
        
        fwrite($ff,$num);
        fclose($ff);

$numarr=str_split($num);
print_r($numarr);
foreach ( $numarr as $v)
{
echo $v;
echo "";
}
工作需要,需要替换线上数据库中某个字段,以下是本人写的一个shell脚本 以备不测。
#!/bin/bash
sf="/tmp/2.txt"
mf="/tmp/name.txt"
iteam=`$sourcefile`
x=`cat $sf | wc -l`
i=1
for i in `seq  $x`
do
     if [ $i -le $x ];then
     user_name=`head -n $i $sf | tail -n 1`
     umail=`head -n $i $mf | tail -n 1`
     table=`/usr/bin/mysql -uroot -p*******  -e "USE test;SET NAMES utf8;UPDATE  ecs_users SET user_name='$user_name'  where user_name='$umail';"`
echo     $table
     # break;
     #echo $user_name;echo $umail;
     fi
done

以下是用php来实现以上功能


$a = file('2.txt');
//echo '
';print_r($a);exit;
mysql_connect("localhost","root","&*&*&**&");
mysql_select_db("test");
mysql_query("set names utf8");
//$sql = "select user_name  from ecs_users where user_name  like 'mengxiang%@126%'";
//$q = mysql_query($sql);
//$a = mysql_fetch_assoc($q);

//while ($row=mysql_fetch_assoc($q)){

//print_r($row);
//}

$i = 1267869;
while ($s = array_pop($a)) {
        $sql = "SELECT user_id from ecs_users where user_id >= $i and user_name like  'youxiang%@126%' order by user_id  ASC  LIMIT 1";
        $res = mysql_query($sql);
        if (!$res) {
                break;
        }
        $b = mysql_fetch_assoc($res);
//       echo '
';print_r($b);exit;
        $i = $b['user_id'];
        echo $i; exit;

        $sql = "UPDATE ecs_users SET user_name = '{$s}' WHERE user_id = '{$i}' LIMIT 1";
        echo $sql, "\r\n";
        mysql_query($sql);
        //echo mysql_affected_rows(), "\r\n";
        $i++;
}

?>

shell脚本对比文件内容差异 不指定

even , 2012/04/26 19:26 , IT技术 » Shell/PHP , 评论(0) , 阅读(1369) , Via 本站原创
工作需要,需要查找数据库里面的用户名是否重复,想了很多办法,借助GG,终于找到了完美的解决办法,分享给大家。

1,首先重数据库里面到处你需要的数据,并且导入到文件。

mysql -uroot -p ****  -e 'use test; set names utf8; select username from users' > name.txt(源数据)

2,准备需要匹配的数据,本人命名为  repeat.txt,删除到重复行,进行匹配

  sed '/^$/d' repeat.txt > repeat1.txt(需要查找的数据)

3,输出repeat1.txt里面有的内容,但是name.txt里面没有的内容,并且输出到 2.txt(不重复的数据)

diff -w repeat1.txt name.txt | grep \^\> > 2.txt()

4,最后一步,2.txt与repeat1.txt 对比,查找哪些数据是重复的数据。
  输出2.txt里面的内容,但是但是repeat1.txt里面不包含的数据。

diff -w 2.txt  repeat1.txt  | grep \^\>

ps:
[root@localhost test]# diff  -w  2.txt   1.txt  | grep \^\>
> sunny
> 喜洋洋
> 开心每一天
> 情定爱情海
> 摩天轮
> 栀子花开
> 梦醒时分
> 自由自在
> 轻舞飞扬




  
在同一台服务器上安装了两个mysql,在启动另外一个mysql没有启动成功时,导致mysql.sock文件丢失,无法登录数据库,mysql.sock丢失的情况下可以通过以下命令登录

mysql --protocol=TCP -uroot -p -P3306 -h127.0.0.1
分页: 1/8 第一页 1 2 3 4 5 6 7 8 下页 最后页 [ 显示模式: 摘要 | 列表 ]