技术杂记(一)
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)
- <?php
- $num1=3.14;
- $num2=(int)$num1;
- var_dump($num1); //输出float(3.14)
- var_dump($num2); //输出int(3)
- ?>
第二种转换方式: intval() floatval() strval()
- <?php
- $str="123.9abc";
- $int=intval($str); //转换后数值:123
- $float=floatval($str); //转换后数值:123.9
- $str=strval($float); //转换后字符串:"123.9"
- ?>
第三种转换方式: settype();
- <?php
- $num4=12.8;
- $flg=settype($num4,"int");
- var_dump($flg); //输出bool(true)
- var_dump($num4); //输出int(12)
- ?>
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]
$cmd = "sudo echo {$info_detail}|sudo tee -a /output"; exec($cmd);
备注:echo 和tee要分别使用sudo 否则后面不带sudo,就不是以root身份执行
#!/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
$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);
完