技術雜記(一)

來源:互聯網
上載者:User

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並不是嚴格的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);  

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.