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)
- <?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)
- ?>
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並不是嚴格的Regex,雖然絕大多數情況下結構比較像.
!= 不等於,如: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/bashfile="/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_filemaincp $tmp_file $fileexit 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);
完