Time of Update: 2018-12-08
之前一篇文章翻譯了Perl語言中的遞迴Regex. 其實不少語言中的正則都是支援遞迴的, 例如本文要介紹的PHP正則遞迴. 雖然, 工作中最常用的Regex都很”正則”, 只用最基本的文法就能解決85%以上的問題, 而且合理有效地使用普通正則來解決複雜問題也是一門技巧與學問; 但是進階一點的文法的確有它存的價值, 有時不用它還真辦不了事兒; 況且學習正則的樂趣也在於嘗試各種各樣的可能性, 滿足自己無窮無盡的好奇心. 本文內容, 整理自網文Finer points of PHP regular
Time of Update: 2018-12-08
EOF 是非常重要的概念,幾乎每種主流程式設計語言都提供了相應的內建函數,來驗證解析器是否到達了檔案EOF。在PHP 中,此函數是feof ()。feof ()函數用來確定是否到達資源末尾。它在檔案I/O 操作中經常使用。其形式為: int feof(string resource) 執行個體如下: 複製代碼 代碼如下:<?php $fh = fopen("/home/www/data/users.txt", "rt"); while (!feof($fh)) echo
Time of Update: 2018-12-08
有時候用phpMyAdmin的時候會突然出現這個錯誤資訊 “無法在發生錯誤時建立會話,請檢查 PHP 或網站伺服器日誌,並正確配置 PHP 安裝” 也不知道到底是怎麼導致這錯誤資訊的,而我有時候把apache重啟一下,再登入就行了,有時候把機器重啟也可以 但今天2種方法都試了,還是不行,我的登入URL是 http://computer-name:8080 然後我嘗試著使用 http://127.0.0.1:8080 進行登入,結果就可以了... 使用127.0.0.1登入成功後,退出,之後再用
Time of Update: 2018-12-08
php的數組的key 可以是string類型也可以是integer類型。如果key為一個float類型,會自動的轉化為integer類型。 如果沒有為一個value指定一個key,integer類型的索引的最大值已經給出的話,新key就是這個最大值加1.如果這個新key已經被賦值,那麼這個value將會被覆蓋掉。 複製代碼 代碼如下:<?php $arr = array('a','b',5=>'c','d','e',6=>'g'); echo '<pre>';
Time of Update: 2018-12-08
integer 可以已10進位,8進位,16進位表示。 用八進位表示的時候,數字需要已0(零)開頭; 用十六進位表示的時候,數字需要已0x(零x)或者0X(零大寫X)開頭; integer 溢出: integer溢出的時候,會自動的轉化為float類型。同樣的,如果integer類型的操作結果溢出了integer類型的邊界,也會自動轉化為float類型。 需要注意的一點就是,integer類型沒有"/"
Time of Update: 2018-12-08
如代碼1所示: 複製代碼 代碼如下:// 代碼 1 // 外觀層類 class LWordHomePage { // 添加留言 public function append($newLWord) { // 調用中間服務層 $serv = new LWordServiceCore(); $serv->append($newLWord); } }; // 中間服務層 class LWordServiceCore { // 添加留言 public function
Time of Update: 2018-12-08
我在寫小偷中用了大量的正則,所以在接下來的版本中要逐步減少正則的應用 在PHPRegex中需要轉義的字元如下: $^*()+={}[]|/:<>.?'" 注意:perl風格中運算式要求以/開始和結尾,如:/food/ 表匹配字元 food perl修飾符如下: i 完成不區分大小寫搜尋 g 尋找所有出現(all occurrences,完成全域搜尋) m
Time of Update: 2018-12-08
Upimages.class.php php上傳類複製代碼 代碼如下:<?php class UpImages { var $annexFolder = "upload";//附件存放點,預設為:annex var $smallFolder = "small";//縮圖存放路徑,註:必須是放在 $annexFolder下的子目錄,預設為:smallimg var $markFolder = "mark";//浮水印圖片存放處 var $upFileType = "jpg gif png";
Time of Update: 2018-12-08
複製代碼 代碼如下:<?php function BigEndian2Int($byte_word, $signed = false) { $int_value = 0; $byte_wordlen = strlen($byte_word); for ($i = 0; $i < $byte_wordlen; $i++) { $int_value += ord($byte_word{$i}) * pow(256, ($byte_wordlen - 1 - $i)
Time of Update: 2018-12-08
在web開發中經常會碰到一些簡單的視頻播放功能,但現在的視頻格式不同,並且可以動態增加,所以我們就必須把視頻儲存到資料哦,好了下面我們來看我寫的段簡單的 php視頻網頁播放器代碼吧。 複製代碼 代碼如下:<?PHP include './admin/connect.php'; @extract($db->get_one("select * from movieinfo where id='".$_GET['id']."'")); $db->query("update
Time of Update: 2018-12-08
如果要用php的畫圖函數,首先要啟用這個模組的功能。就是把php.ini中php_gd2.dll前面的注釋去掉就好了。 下面開始畫圖: 複製代碼 代碼如下: <?php session_start(); //產生驗證碼圖片 Header("Content-type: image/PNG"); $im = imagecreate(44,18); // 畫一張指定寬高的圖片 $back = ImageColorAllocate($im, 245,245,245); // 定義背景顏色
Time of Update: 2018-12-08
1.不轉意html entities 一個基本的常識:所有不可信任的輸入(特別是使用者從form中提交的資料) ,輸出之前都要轉意。 echo $_GET['usename'] ; 這個例子有可能輸出: <script>/*更改admin密碼的指令碼或設定cookie的指令碼*/</script> 這是一個明顯的安全隱患,除非你保證你的使用者都正確的輸入。 如何修複 : 我們需要將"< ",">","and" 等轉換成正確的HTML表示(< , >
Time of Update: 2018-12-08
複製代碼 代碼如下:** * 寫檔案 * @param string $file 檔案路徑 * @param string $str 寫入內容 * @param char $mode 寫入模式 */ function writeFile($file,$str,$mode='w') { $oldmask = @umask(0); $fp = @fopen($file,$mode); @flock($fp, 3); if(!$fp) { Return false; } else { @fwrite(
Time of Update: 2018-12-08
上傳cvs並匯入到資料庫中,測試成功(部分代碼不規範,如PHP_SELF那裡要改寫成$_SERVER["PHP_SELF"] ) PHP代碼 複製代碼 代碼如下:<?php $fname = $_FILES['MyFile']['name']; $do = copy($_FILES['MyFile']['tmp_name'],$fname); if ($do) { echo"匯入資料成功<br>"; } else { echo ""; } ?> <form
Time of Update: 2018-12-08
PHP以其易用性得到迅速的推廣,但易用並不是說就能用好它,實際上許多程式員用它很容易的立一個個WEB應用系統,但又有多少人仔細的考慮過他們的代碼,是否容易維護、是否足夠健壯、否效率足夠高、是否足夠安全,當PHP用於建立大型網站時這些就成為很關鍵的因素。下面我們從較輕微的問題開始討論,直至一些致命的錯誤。共分三部分。 第一部分、較輕微的錯誤 一、Printf(), 該函數主要用來格式化顯示資料。當你要改變某個資料的顯示格式時才使用。 例如以不同的精度來顯示PI(3.1415926)的值。
Time of Update: 2018-12-08
複製代碼 代碼如下:$arrInsert = insertContent("array.php", "abcdef", 3, 10); unlink("array.php"); foreach($arrInsert as $value) { file_put_contents("array.php", $value, FILE_APPEND); } function insertContent($source, $s, $iLine, $index) { $file_handle =
Time of Update: 2018-12-08
final---用於類、方法前。 final類---不可被繼承。 final方法---不可被覆蓋。 final類不能被繼承。 如果我們不希望一個類被繼承,我們使用final來修飾這個類。這個類將無法被繼承。比如我們設定的Math類,涉及了我們要做的數學計算方法,這些演算法也沒有必要修改,也沒有必要被繼承,我們把它設定成final類型。複製代碼 代碼如下:<? //聲明一個final類Math final class Math{ public static $pi = 3.14;
Time of Update: 2018-12-08
複製代碼 代碼如下:function T_rndstr($length=""){//返回隨機字串 $str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; if($length==""){ return str_shuffle($str); }else{ return substr(str_shuffle($str),-$length); } } $T_k1=T_rndstr();//隨機密匙1 $T_k2=T_rndstr();/
Time of Update: 2018-12-08
近來看到了一個巧妙地方法,原理是 $var_a ='var_b'; $$var_a ='test'; 則echo $var_b;為'test' 因此可以這樣處理 複製代碼 代碼如下:foreach(array('_COOKIE', '_POST', '_GET') as $_request) { foreach($$_request as $_key => $_value) { $_key{0} != '_' && $$_key = addslashes(
Time of Update: 2018-12-08
然後我用PHP實現了這個功能,我覺得用PHP來做這項工作簡直是一種享受!使用其提供的強大的HTML頁面處理函數和Regex,短短的幾行代碼就能搞定這個功能。 貼一下關鍵代碼: 複製代碼 代碼如下:<?php //擷取優酷頁面中的flash地址 function get_flash_url( $url ) { $lines = file($url); foreach ($lines as $linenum=> $line) { preg_match_all('|<input