技术杂记(一)

PHP的数据类型转换属于强制转换

shell里时间戳转换成字符串时间的方法?

PHP正则验证邮箱类

drupal 调试命令

请教在bsh里面如何比较两个变量的大小

php执行shell权限问题

crontab源码分享

php mail邮件


http://banu.blog.163.com/blog/static/231464820101122114438674/

PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:

  • (int)、(integer):转换成整形
  • (float)、(double)、(real):转换成浮点型
  • (string):转换成字符串
  • (bool)、(boolean):转换成布尔类型
  • (array):转换成数组
  • (object):转换成对象

PHP数据类型有三种转换方式:

  • 在要转换的变量之前加上用括号括起来的目标类型
  • 使用3个具体类型的转换函数,intval()、floatval()、strval()
  • 使用通用类型转换函数settype(mixed var,string type)

 第一种转换方式: (int)  (bool)  (float)  (string)  (array) (object)

 
  1. <?php   
  2. $num1=3.14;   
  3. $num2=(int)$num1;   
  4. var_dump($num1); //输出float(3.14)   
  5. var_dump($num2); //输出int(3)   
  6. ?>  

第二种转换方式:  intval()  floatval()  strval()

 
  1. <?php   
  2. $str="123.9abc";   
  3. $int=intval($str);     //转换后数值:123   
  4. $float=floatval($str); //转换后数值:123.9   
  5. $str=strval($float);   //转换后字符串:"123.9"    
  6. ?>  

第三种转换方式:  settype();

 
  1. <?php   
  2. $num4=12.8;   
  3. $flg=settype($num4,"int");   
  4. var_dump($flg);  //输出bool(true)   
  5. var_dump($num4); //输出int(12)   
  6. ?>

http://www.dewen.org/q/4713

shell里时间戳转换成字符串时间的方法?

echo "1345623153"| awk '{T=strftime("%F %T",$1);print T}'

echo "1345623153"| sed "s/\(.*\)/date -d @\1 '+%Y-%m-%d %H:%M:%S'/e"


  if(preg_match("/^[0-9a-zA-Z]+(?:[\_\-][a-z0-9\-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\.[a-zA-Z]+$/i", $this->mail))


http://my.oschina.net/Tilen/blog/76309

http://www.360doc.com/content/12/0113/10/7312479_179111904.shtml

 

$test = "wkl";

dd($test)

dd能够输出复杂对象,输出目录为drupal临时目录或系统/tmp/drupal_debug.txt中。

 

error_log("------------pay success", 0);

输出到/opt/lampp/logs/error_log;

 

  dsm(), dvm(),dpr(),和 dvr()函数来输出调试消息 

dpm()向页面的消息区域输出一个简单变量(比如,一个字符串或者一个整数) 可把它理解为。“调试输出消息”(“debug print message” )的意思。

dvm()向页面的消息区域输出一个 var_dump()。对于复杂的变量比如数组或者对象,可以为其使用这个函数。可把它理解为
“调试变量消息”“debug variable message”()的意思。
• dpr()使用一个特殊的递归函数(dprint_r()),在页面顶部输出一个复杂的变量(比如一个数组或者对象)
,这里输出结果的格
式也是很漂亮的。
• dvr()在页面顶部输出一个格式良好的 var_dump()。

其他 kpr() , error_log, drupal_debug  ==


http://bbs.chinaunix.net/thread-1811104-1-1.html

整数比较

-eq                等于,如:if [ "$a" -eq "$b" ]
-ne                不等于,如:if [ "$a" -ne "$b" ]
-gt                大于,如:if [ "$a" -gt "$b" ]
-ge                大于等于,如:if [ "$a" -ge "$b" ]
-lt                小于,如:if [ "$a" -lt "$b" ]
-le                小于等于,如:if [ "$a" -le "$b" ]
<                小于(需要双括号),如"$a" < "$b")
<=                小于等于(需要双括号),如"$a" <= "$b")
>                大于(需要双括号),如"$a" > "$b")
>=                大于等于(需要双括号),如"$a" >= "$b")

字符串比较
=                等于,如:if [ "$a" = "$b" ]
==                等于,如:if [ "$a" == "$b" ],与=等价
                注意:==的功能在[[]]和[]中的行为是不同的,如下:
                1 [[ $a == z* ]]    # 如果$a以"z"开头(模式匹配)那么将为true
                2 [[ $a == "z*" ]]  # 如果$a等于z*(字符匹配),那么结果为true
                3 
                4 [ $a == z* ]      # File globbing 和word splitting将会发生
                5 [ "$a" == "z*" ]  # 如果$a等于z*(字符匹配),那么结果为true
                一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.
                但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
!=                不等于,如:if [ "$a" != "$b" ]
                这个操作符将在[[]]结构中使用模式匹配.
<                小于,在ASCII字母顺序下.如:
                if [[ "$a" < "$b" ]]
                if [ "$a" \< "$b" ]
                注意:在[]结构中"<"需要被转义.
>                大于,在ASCII字母顺序下.如:
                if [[ "$a" > "$b" ]]
                if [ "$a" \> "$b" ]
                注意:在[]结构中">"需要被转义.
                具体参考Example 26-11来查看这个操作符应用的例子.
-z                字符串为"null".就是长度为0.
-n                字符串不为"null"
                注意:
                使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z
                或者就是未用""引用的字符串本身,放到[]结构中(见Example 7-6)虽然一般情况下可
                以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.[1]


使用 visudo 修改 sudoers 設定檔 ( 或是直接編輯 /etc/sudoers )
 
nobody 執行 任何 指令時,無須密碼
nobody ALL=(ALL) NOPASSWD:ALL 
 
php ex:
$output = exec("/usr/bin/sudo /root/SOME_SCRIPT");
echo $output;

 

$cmd = "sudo echo {$info_detail}|sudo tee -a /output"; 
              exec($cmd);

 

 备注:echo 和tee要分别使用sudo 否则后面不带sudo,就不是以root身份执行


crontab 控制源码

#!/bin/bash
file="/var/log/ppp/deal.info"
now_time=$(date +%s)
tmp_file="/var/log/ppp/tmp.info"
ppp_chap="/etc/ppp/chap-secrets"

function main
{
    while read line 
    do
       local expired_time=$(echo $line|awk '{print ($4 + $2*30*24*3600)}')

       if [ "$now_time" -le "$expired_time" ]
       then
          echo $line >> $tmp_file
       else
          local deal_email=$(echo $line|awk '{print $3}')  
          echo $deal_email
          sed -i "/$deal_email/d" /etc/ppp/chap-secrets
       fi
    done < $file
}

cat /dev/null > $tmp_file
main

cp $tmp_file $file
exit 0

 

 


 

php邮件发送

 

 $to = $order->primary_email;
              $subject = "您的vpn(pptp)账号";
              $txt = "账号:{$count_name} , 密码:{$count_passwd}.使用方法请参照pptp设置:http://www.suvpn.com/help-list.服务器地址为:wangkangle.com.";
              $headers = "From: wangkangluo1@163.com";
              mail($to,$subject,$txt,$headers);  

 

 

 

 

 

 

 

 

posted @ 2012-11-20 16:54  wangkangluo1  阅读(591)  评论(0编辑  收藏  举报