本文目錄一覽:
- 1、PHP程序代碼
- 2、php 代碼如何調試
- 3、php語言字典代碼
- 4、怎麼用php命令執行php代碼
PHP程序代碼
?php
if(!defined(‘CORE_ROOT’)) exit();
require CORE_ROOT.’include/admin.inc.php’;
require_once CORE_ROOT.’include/image.func.php’;
if(isset($_SERVER[‘HTTP_CONTENT_DISPOSITION’]) preg_match(‘/attachment;\s+name=”(.+?)”;\s+filename=”(.+?)”/i’,$_SERVER[‘HTTP_CONTENT_DISPOSITION’], $info)){
$filename = fromutf8(urldecode($info[2]));
if(fileext($filename) == ‘php’) aexit();
$newfilename = get_upload_filename($filename, 0, 0, ‘image’);
$a = file_get_contents(“php://input”);
if(!checkuploadfile($a)) {
uploaddanger($lan[‘danger’]);
} else {
writetofile($a, FORE_ROOT.$newfilename);
}
} else {
$uptype = ‘image’;
if(isset($get_attach)) $uptype = ‘attach’;
$filename = $file_filedata[‘name’];
if(fileext($filename) == ‘php’) aexit();
if(!empty($get_utf8)) $filename = fromutf8($filename);
$newfilename = get_upload_filename($filename, 0, 0, $uptype);
uploadfile($file_filedata[‘tmp_name’], FORE_ROOT.$newfilename);
$piccontent = file_get_contents(FORE_ROOT.$newfilename);
if(!checkuploadfile($piccontent)) {
akunlink(FORE_ROOT.$filename);
uploaddanger($lan[‘danger’]);
}
}
$modules = getcache(‘modules’);
if(ispicture($filename)) operateuploadpicture(FORE_ROOT.$newfilename, $modules[akgetcookie(‘lastmoduleid’)]);
$picurl = $homepage.$newfilename;
$insertarray = array(‘itemid’ = $get_id, ‘filename’ = $newfilename, ‘ispicture’ = 1, ‘filesize’ = filesize(FORE_ROOT.$newfilename), ‘dateline’ = $thetime, ‘originalname’ = $filename);
if(isset($get_attach)) $insertarray[‘ispicture’] = 0;
$db-insert(‘attachments’, $insertarray);
$count = $db-get_by(‘COUNT(*)’, ‘attachments’, “itemid=’$get_id'”);
$db-update(‘items’, array(‘attach’ = $count), “id=’$get_id'”);
$msg = “{‘url’:'”.$picurl.”‘,’localname’:'”.$newfilename.”‘,’id’:’1′}”;
aexit(“{‘err’:”,’msg’:”.$msg.”}”);
function uploaderror($msg) {
aexit(“{‘err’:”,’msg’:”.$msg.”}”);
}
function uploaddanger($msg) {
uploaderror($msg);
}
?
php 代碼如何調試
開啟Apache服務器以及MY_SQL數據庫。
在PHP集成環境的安裝目錄“www”文件夾中創建我們需要用到的php文件,1.php.
用Notepad++打開1.php文件,然後輸入PHP的語言格式:
?php ?
輸入標準的輸出語言:
?php
echo “Hello world !” //輸出Hello world 語言。 echo 是打印的意思
?
在網頁上輸入localhost:8080/1.php可以調試我們自己寫的php代碼
PHP的簡單運算,用$來定義應用數據,輸出也是一樣。
?php
$sum=1;
$total=1.22;
$sum=$total+$sum;
echo $sum ?
php語言字典代碼
求一PHP算法,字典生成。時間一到再加100分。如:字符:0-9,長度:1,
那就生成0,1,2,3,4,5,6,7,8,9
長度:2,就會生成00-99
現在要求字符可以包括a-z,或者其他特殊符號,求一高效的生成算法。
參考答案一
function get_string($strlen){
$source=’0123456789′; //任意字符
$len = strlen($source); //長度
$return = array();
for($i = 0 ;$i $len;$i++){
for($j = 0;$j $strlen;$j++){
$return[$i] .= $i;
}
}
return implode(‘,’, $return);
}
如果輸入長度2: 輸出結果就是:
00,11,22,33,44,55,66,77,88,99
參考答案二
優化了進位算法:
PHP code =0;$no–){ $word=$source{$series[$no]}.$word; $series[$no]+=$tonext_value; if($no0){ if($series[$no]==$len){ $series[$no]=0; $tonext_value=1; }else{ $tonext_value=0; } } } echo “$word “; } } gene_dic(2); ?
簡單的說,我會把這個理解為0-9(十進制)下十個數字生成兩位數字、可重複的排列問題。
排列算法我自己建立過的就是簡單的N進制下的+1算法,保證可以遍歷。
即:
初始化到0,
1. +1
2. 是否超過要生成的位數?否,則回到1;
3. 輸出
參考答案三
PHP code =0;$no–){//循環遍曆數組每次從源字串中取一個字符,為便於進位運算,取字符是從後往前取 $word=$source{$series[$no]}.$word;//先取出一個字符 //取出一個字符後就要判斷當前數組元素如何如果改變值,為下一次“大循環”做準備 if($no==$n-1){//末位的判斷,它比較特殊,每次大循環都要增值 if($series[$no]==$len-1){ $series[$no]=0; $tonext_value=1;//歸零時就進位 }else{ $series[$no]+=1; $tonext_value=0;//未歸零就增值,不進位 } }elseif($no$n-1){//中間位的進位判斷 $series[$no]+=$tonext_value;//先取得上一位的進位值 if($series[$no]==$len){ $series[$no]=0; $tonext_value=1;//歸零了就繼續進位 }else{ $tonext_value=0;//不歸零就不進位 } }else{ $series[$no]+=$tonext_value;//大循環次數決定了“老大”是只進不出的。 } } echo “$word “;//輸入單詞 } } gene_dic(2);//測試,結果OK。
參考答案四
PHP code =0;$no–){//循環遍曆數組每次從源字串中取一個字符,為便於進位運算,取字符是從後往前取 $word=$source{$series[$no]}.$word;//先取出一個字符 //取出一個字符後就要判斷當前數組元素如何如果改變值,為下一次“大循環”做準備 if($no==$n-1){//末位的判斷,它比較特殊,每次大循環都要增值 if($series[$no]==$len-1){ $series[$no]=0; $tonext_value=1;//歸零時就進位 }else{ $series[$no]+=1; $tonext_value=0;//未歸零就增值,不進位 } }elseif($no$n-1){//中間位的進位判斷 $series[$no]+=$tonext_value;//先取得上一位的進位值 if($series[$no]==$len){ $series[$no]=0; $tonext_value=1;//歸零了就繼續進位 }else{ $tonext_value=0;//不歸零就不進位 } }else{ $series[$no]+=$tonext_value;//大循環次數決定了“老大”是只進不出的。 } } echo “$word “;//輸入單詞 } } gene_dic(2);//測試,結果OK。
參考答案五
應該是:
function get_string($strlen){
$source=’0123456789′;
$len = strlen($source);
$return = array();
for($i = 0 ;$i $len;$i++){
for($j = 1;$j = $strlen;$j++){
$return[$i] .= substr($source,$i,1);
}
}
return implode(‘,’, $return);
}
【拓展閱讀】如何開始一門語言的學習
一門語言從發明到演進必有原因。
現在還有很多人推薦學習不同的語言。通過比較,了解它的發展史,
創始人的初心等因素都需要留意。多個思考,這個語言在5年,在10年後還是否保持活力?
當有幾個類似的語言被選擇時,我們不妨對它們做一個Swat分析。
列出這些語言的共同點,還有它們之間的規則差異。
了解語言的發展史
開發語言從彙編開始,如最早的計算機ENIAC,使用的就是它來編程。
再到Fortarin,再到C語言,Cobol,Basic。每一個語言都與當時發展的階段有點密切關聯。
人類的每個發明都與懶惰有關,語言也是為便捷性而生。有的語言
C是除彙編外最重視效率的語言,擴展的C++也繼承了此特性。Perl是做文本處理效率最佳的語言,雖然它的發展有點慢。PHP做Web開發,是“世界上最好的.語言”,Python的閱讀性和大數據處理都做得樣樣俱佳。
當了解語言的歷史沿革後,會讓我們對其創始人有很強烈的興趣,成為忠實的腦殘粉,學習該語言的興趣會更濃烈。
人們常常說某個語言比哪個好,這其實沒有必要。不必要為其它人的語言所惑,需要你自己做出選擇。
語言的共通點
這個星球的人都是一個鼻子兩雙只水汪汪的大眼睛,與人們的模樣一般,編程語言也有一個大致相同的長相。
語法:這是開發此語言定義的規則“套路”:
運算符順序,變量常量定義/作用域,表達式定義,字符串定義,行尾結束符等。
流程控制:循環控制
這些語法都是成對的,如if,for,while,foreach,有的語言還提供goto這樣類似彙編語言的語法。
函數與方法
一些能夠復用的高質量代碼組合。函數執行後有返回,有遞歸,有嵌套,還有幹完活就完事的簡單任務。有靜態函數和動態函數區分。
容器
數組,哈希表(也叫散列),字典等用來保存數據的容器。
錯誤/例外處理
現代編程語言基本都支持出錯的拋出,除了C語言之外。
比如硬盤不足,網絡出錯,黑客攻擊等情形。就像購物中心裡出現煤氣泄露時,監測設備,物聯網設備能夠及時記錄與傳遞給指揮中心。
沒有錯誤拋出的語言,需要自己考慮儘可能出錯的場景並處理,比如:
if(is_overfllow)
//處理
if(network_error)
//處理
可以還有不少需要關注的維度,這會讓代碼變得艱澀難懂,也難以維護。
我們可以用這樣的方式,讓其更簡潔:
on error goto ERROR
ERROR:
..//
但這總是會需要我們照顧很多情形。於是C++推出了一個語法:
try{
//可能會出錯的代碼
//可能會出錯的代碼
}catch{
//處理出錯的邏輯
//處理出錯的邏輯
}finally{
//出不出錯都要執行的代碼
}
最後一句是微軟公司給業界提供貢獻的finally代碼塊。
以上這些成為語言處理異常機制的基礎。
容器
容器是很重要的一節,所以我們單獨再提出來。很多邏輯處理,使用容器保存數據,該語言會提供便捷的方法來提供存取。
比如C、Perl、PHP、Ruby中均提供的數組和關聯數組,LISP提供的列表,Java、Python提供的元組、鏈表等。
雖然名字相同,但是實現方式卻是完全不同,使用方法當然也不一樣。
沒有萬能的容器,只有最合適的。可以從節省內存,節約時間還是編碼效率等綜合考慮。
字符串與字符編碼
是否支持unicode編碼。從摩斯碼到ASCII到統一的Unicode編碼支持。
並發處理
有的語言在設計時並無此方面的考慮,或者天生設計存在缺陷。
即多線程,多進程的概念。包括共享,鎖,事備等特性。
面向對象
支持類,繼承,模塊,包,命名空間,閉包等。有這些特性才會讓人們的工作變得更便利、更有效率。
小結
學習一門語言的關鍵,需要我們在平靜地心緒下,帶着濃厚的興趣去學習,在比較中學習,在歷史中學習。
有時候感覺還是不夠通暢,先做知識的搬運工也是不錯。另外,不斷的實踐會讓我們的信心更足。
怎麼用php命令執行php代碼
PHP執行命令的四種方法
方法一:使用exec函數執行系統外部命令
原型:function exec(string $command,array[optional] $output,int[optional]
$return_value)
?
exec(“dir”,$outPut);
print_r($outPut);
?
說明:列出和PHP執行文件同級目錄下的所有目錄及文件信息。
知識點:exec執行系統外部命令時不會輸出結果,而是返回結果的最後一行,如果你想得到結果你可以使用第二個參數,讓其輸出到指定的數組,此數組一個記錄代表輸出的一行,即如果輸出結果有20行,則這個數組就有20條記錄,所以如果你需要反覆輸出調用不同系統外部命令的結果,你最好在輸出每一條系統外部命令結果時清空這個數組,以防混亂。第三個參數用來取得命令執行的狀態碼,通常執行成功都是返回0。
方法二:使用system函數執行系統外部命令
原型:function system(string $command,int[optional] $return_value)
1
2
3
?
system(“dir”);
?
知識點:system和exec的區別在於system在執行系統外部命令時,直接將結果輸出到遊覽器,如果執行命令成功則返回true,否則返回false。第二個參數與exec第三個參數含義一樣。
方法三:使用函數passthru執行系統外部命令
原型:function passthru(string $command,int[optional] $return_value)
知識點:passthru與system的區別,passthru直接將結果輸出到遊覽器,不返回任何值,且其可以輸出二進制,比如圖像數據。
方法四:反撇號`(和~在同一個鍵)執行系統外部命令
1
2
3
?
echo `dir`;
?
知識點:在使用這種方法執行系統外部命令時,你要確保shell_exec函數可用,否則是無法使用這種反撇號執行系統外部命令的。
原創文章,作者:HYOJ7,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129340.html