2018年6月20日 星期三

Regular Expression 正則表示式做字串比對

Regular Expression 中文翻成正則表示式
英文簡寫為 Regex 或 RegExp
RegExp 是用來比對字串是不是有符合正確的格式
語法很簡單而且大部分語言都有支援它

使用時機

譬如說你需要在程式內請使用者輸入生日
你規定的格式
  • 1996-08-06
但使用者可能會不小心輸成其他格式
  • 19960806
  • 1996-8-6
  • 85-08-06
  • 850806
如果要寫程式來過濾這些格式恐怕要寫很多判斷式
這時候就可以用 Regexp 來驗證字串格式

語法

字元

a: a 這個字元
0: 0 這個字元
.: 任意字元
RegExp說明範例
/a/含有字母 a 的字串"a","apple"
/./含有任意字元的字串"aaa","a","嗨"
/a./含有字母 a 後面接一個任意字元的字串"aaa","apple"

次數

*: 出現 0 次以上
?: 出現 0 次或 1 次
+: 出現一次以上

{2}: 出現兩次
{2,}: 出現兩次以上
{,10}: 出現十次以下
{2,5}: 出現兩次到五次
RegExp說明範例
/a*/包含 0 次以上的 a"apple","hello"
/ab*/包含一個 a,後面至少 0 個 b"a","ab"
/a?/包含空字串或一個 a"c","","app"
/123a+/包含 123 後面有一個以上的 a"123a","123app"
/123a{1,2}/包含 123 後面出現一個或兩個 a"1123a","123aaa"

頭尾

^: 開頭
$: 結尾
RegExp說明範例
/^app/開頭是 app 的字串"app","apple"
/ry$/結尾是 ry 的字串"Larry"
/^abcd$/開頭結尾中間只有 abcd 的字串"abcd"
/^La.*le$/開頭是 La 尾巴是 le 的字串"Larry loves apple"

比對多個字元

[]: 括號內的任何字元
[^]: 不在括號內的任何字元
RegExp說明範例
/^[aeiou]/開頭是小寫母音的字串"apple","oh"
/[^aeiouAEIOU]$/結尾不是母音的字串"Larry","ok"
/^[aeiou]{3}$/三個小寫母音組成的字串"aaa","aeu"
/^[^aeiou]*$/不包含小寫母音的字串"hEllO","ApplE"
/[0-9]/含數字的字串"app1e","123"
/[a-z]/含小寫字母的字串"12a45","aaa"
/^[^a-zA-Z]$/不含英文字母的字串"123","345"

特殊字元

\.: "." 這個字元,直接寫 /./ 會被判斷成任意字元
\+: "+" 這個字元,類似的還有 \?, \*
\(: "(" 這個字元,類似的還有 \), \[, \]
\\: "\" 這個字元

\d: 任何數字字元,等同 [0-9]
\D: 任何非數字字元,等同 [^0-9]
\w: 任何數字字母底線,等同 [A-Za-z0-9_]
\W: 任何非數字字母底線,等同 [^A-Za-z0-9_]
\s: 任何空白字元(空白,換行,tab),等同 [ \f\n\r\t\v]
\S: 任何非空白字元(空白,換行,tab),等同 [^ \f\n\r\t\v]

實例

RegExp說明範例
/^\d{4}-\d{2}-\d{2}$/西元生日格式"1996-08-06"
/^[A-Z]\d{9}$/身分證字號"A123456789"
/^09\d{8}$/手機號碼"0912345678"
/^[^aeiou]*$/不包含小寫母音的字串"hEllO","ApplE"
/^.*@gmail\.com$/gmail 信箱"test@gmail.com"
/^[0-9\+\-\*\/]*$/四則運算算式"1+2*3"

在各語言中使用

C++

註: C++ 11 才開始支援 regex
#include<regex>
#include<string>
using namespace std;

int main(){
    regex pattern("^[0-9]{4}-[0-9]{2}-[0-9]{2}$");
    string str = "1996-08-06";

    if(regex_match(str, pattern)){
        // doSomething
    }
}

Java

public class Example {
    public static void main(String[] args) {
        String pattern = "^[0-9]{4}-[0-9]{2}-[0-9]{2}$";
        String str = "1996-08-06";

        if(str.matches(pattern)){
            //doSomething
        }
    }
}

JavaScript

var pattern = new RegExp('[0-9]{4}-[0-9]{2}-[0-9]{2}');
var str = '1996-08-06';

if(str.match(pattern)){
    // doSomething
}

結論

Regular Expression 是個很好用的工具 剛學可能會覺得有點複雜
用久了之後就會覺得很好用
而且也可以搭配 sed 跟 grep 做取代、搜尋的工作
可以省下不少時間

這篇只介紹比較常用的一些表示法
如果想知道更深入的可以再到網路上去查

2018年6月8日 星期五

PHP : getdate

PHP : getdate



定義和用法

getdate() 函數取得日期/時間信息。

語法

getdate(timestamp)
參數描述
timestamp可選。規定Unix 時間格式中的時間。

說明

返回一個根據timestamp得出的包含有日期信息的結合數組。如果沒有給出時間戳,則認為是當前本地時間。
數組中的單元如下:
鍵名說明返回值例子
"seconds"秒的數字表示0 到59
"minutes"分鐘的數字表示0 到59
"hours"小時的數字表示0 到23
"mday"月份中第幾天的數字表示1 到31
"wday"星期中第幾天的數字表示0(表示星期天)到6(表示星期六)
"mon"月份的數字表示1 到12
"year"4 位數字表示的完整年份例如:1999 或2003
"yday"一年中第幾天的數字表示0 到365
"weekday"星期幾的完整文本表示Sunday 到Saturday
"month"月份的完整文本表示January 到December
0自從Unix 紀元開始至今的秒數,和time() 的返回值以及用於date() 的值類似。系統相關,典型值為從-2147483648 到2147483647。

例子

例子 1

<?php
print_r(getdate());
?>
輸出:
Array
(
[seconds] => 45
[minutes] => 52
[hours] => 14
[mday] => 24
[wday] => 2
[mon] => 1
[year] => 2006
[yday] => 23
[weekday] => Tuesday
[month] => January
[0] => 1138110765
)

例子 2

<?php
$my_t=getdate(date("U"));
print("$my_t[weekday], $my_t[month] $my_t[mday], $my_t[year]");
?>
輸出:
Wednesday, Janua

2018年6月1日 星期五

cordova 筆記

[Android 模擬器] Genymotion
https://www.genymotion.com/account/create/
tomz50/tomz10750

tomz50@gmail.com


----
1.安裝 node.js / node-v8.11.1-x64
2.安裝 java.jdk 1.8版本
3.設PATH 路徑參數
2.安裝 apache-ant / 解壓 apache-ant-1.9.11-bin.zip 到 d:\apache-ant 資料夾
5.建立cordova環境,導入專案
6.建立android studio 裡的模擬器環境
7.將要編譯成APK的完整網頁(含HTML/CSS/IMAGES),複製到 D:\cordova\blogapp\www\ 資料夾
8.D:\cordova\blogapp>cordova build android 進行編譯成APK
9.將 D:\cordova\blogapp\platforms\android\app\build\outputs\apk\debug\app-debug.apk
拖曳到模擬器執行

10. create/add/build --> 生成apk -> 丟到模擬器RUN
11. cordova 步驟 :

(1)D:\cordova>cordova create myapp com.macroviz.myapp myapp
(2)D:\cordova\myapp>cordova platform add android
(3)D:\cordova\myapp>cordova build android

www 存放位置 : D:\cordova\myapp\www
apk 存放位置 : D:\cordova\myapp\platforms\android\app\build\outputs\apk\debug

----

ANDROID_HOME   C:\Users\user\AppData\Local\Android\sdk
ANT_HOME D:\apache-ant-1.9.7
JAVA_HOME C:\Program Files\Java\jdk1.8.0_171


PATH=
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;
C:\Program Files\Java\jdk1.8.0_171\bin;
C:\Program Files\nodejs\;D:\javaScript\apache-ant-1.9.7\bin;
C:\Users\user\AppData\Local\Android\sdk\tools;
C:\Users\user\AppData\Local\Android\sdk\platform-tools;
D:\apache-ant-1.9.11\bin



cordova -v 版本
ant -version

cordova 只支援JAVA 1.8版本,先移除較新的版本,安裝1.8版
D:\cordova\blogapp>java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)



C:\Program Files\Java\jdk-10\bin;
C:\nodejs\;
%ANT_HOME%\bin;
%ANDROID_HOME%\tools;
%ANDROID_HOME%\platform-tools;


set path=
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Java\jdk-10\bin;%ANT_HOME%\bin;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;C:\xampp\php;C:\ProgramData\ComposerSetup\bin;D:\apache-ant-1.9.11\bin;C:\nodejs\;C:\Users\Administrator\AppData\Roaming\npm\node_modules\cordova\bin;C:\Program Files\Java\jdk1.8.0_171



移到你想建立專案的目錄下。
使用指令建立專案,建立在目前的位置上。
建立一個 D:\cordova\ 資料夾

**一定要在 D:\cordova 資料夾下執行以下指令
D:\cordova>cordova create myapp com.macroviz.myapp myapp
Creating a new cordova project.


會建立一個 D:\cordova\blogapp\ 資料夾

將專案加入平台,平台指的是你的App之後要執行在哪,以Android為例,使用指令完成。
cordova platform add android

為專案加入作業系統台
**一定要在 D:\cordova\blogapp 資料夾下執行以下指令
D:\cordova\blogapp>cordova platform add android         
Using cordova-fetch for cordova-android@~7.0.0
Adding android project...
Creating Cordova project for the Android platform:
        Path: platforms\android
        Package: com.macroviz.blogapp
        Name: blogapp
        Activity: MainActivity
        Android target: android-26
Subproject Path: CordovaLib
Subproject Path: app
Android project created with cordova-android@7.0.0
Android Studio project detected
Android Studio project detected
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the project
Installing "cordova-plugin-whitelist" for android

               This plugin is only applicable for versions of cordova-android greater t
han 4.0. If you have a previous platform version, you do *not* need this plugin since t
he whitelist will be built in.

Adding cordova-plugin-whitelist to package.json
Saved plugin info for "cordova-plugin-whitelist" to config.xml
--save flag or autosave detected
Saving android@~7.0.0 into config.xml file ...

D:\cordova\blogapp>cordova platform rm android
Removing platform android from config.xml file...
Removing android from cordova.platforms array in package.json




生成Android專案
D:\cordova\blogapp>cordova build android
.....
:app:cdvBuildDebug

BUILD SUCCESSFUL in 20m 33s
47 actionable tasks: 47 executed
Built the following apk(s):
        D:\cordova\blogapp\platforms\android\app\build\outputs\apk\debug\app-debug.apk

2018年5月31日 星期四

2018年5月21日 星期一

php教學

http://www.twhappy.com/index.php?action=blog&category=6

http://www.cg.com.tw/PHP/

https://www.youtube.com/watch?v=RpCKPQ5yDhg

http://www.csie.sju.edu.tw/cm/course/phpteach.htm

http://www.jollen.org/php/

XMAPP PHP.ini 設定

php.ini設定檔中文說明


Step4:設定php.ini 檔

short_open_tag=on | off
 是否允許使用<? ?>這種簡單的標識格式,當設定為Off時只有<?php ?>這種標識能被識別.

asp_tags=on | off
; 是否允許使用ASP風格的標識格式<% %>.

register_globals=on | off
; 是否將這些 EGPCS 變量註冊為全局變量.
; 若你不想讓會員資料不在全局範圍內混亂的話,你可以想關閉它.
; 這和 track_vars 連起來用更有意義 — 這樣你可以通過$HTTP_*_VARS[] 數組瀏覽所有的GPC變量.
; 建議儘量不使用全局變量,因為它有可能引起安全問題,所以這個指令是不被推薦的.


display_error=on | off
顯示錯誤(作為輸出的一部分).在WEB網站上,建議您關掉這個功能,並用錯誤日誌的方式來代替.
; 如果開啟此功能可能會給您帶來安全問題,例如檔案在伺服器上的路徑和您的資料庫或其它訊息.
; 不過在Debug過程中,開啟此項會給調試程式帶來極大的方便.

; 如果display_startup_errors設定為Off,即使display_errors被設定成On,
; 在PHP啟動過程中的錯誤也不會被顯示.如果不是在Debug過程中,建議您關閉此項.
display_startup_errors = On


date.timezone=Asia/Taipei


註:替代方案是安裝XAMPP, 優點是省去軟體間協同工作的「環境設定」

----

;;;;;;;;;;;;;;;;;;;
; PHP.INI中文說明 ;
;;;;;;;;;;;;;;;;;;;
; 這個檔案是PHP安裝的預設配置檔案.
; 預設設定下, PHP是以程式開發為目的,而不是為了其它目的!
; 由於PHP在應用在您的網站之前必須考慮一些安全問題,
; 所以請您參考php.ini-recommended(被推薦的)中相關參數的設定,
; 另外,您也可以在以下網站獲得幫助:http://php.net/manual/en/security.php.


;;;;;;;;;;;;;;;;
; 關於這個檔案 ;
;;;;;;;;;;;;;;;;
; 這個檔案控制著PHP的許多方面,為了能讓PHP正常讀取它,這個檔案必須被命名為"php.ini".
; PHP運行時依次在以下路徑中尋找這個檔案:目前工作目錄,環境變量PHPPRC指定路徑,編譯時
; 指定的路徑.
; 在Windows下,編譯時指定路徑就是Windows的安裝目錄,
; 在命令提示符下,可以用-c的參數來替代php.ini的查找路徑.
;
; 這個配置檔案的設定極其簡單. 以空白字元和分號開始的行被忽略(可能您已經想到了^_^),
; 雖然它們可能在將來有意義...
;
; 您在配置php.ini時,請使用以下的指定語法:
; 指示 = 值
; 注意:指示標識符是區分大小寫的,例如foo=bar和FOO=bar是不同的.
; 值可以是一個字元,一個數字,一個PHP常量(例如E_ALL和M_PI),
; 一個INI常量(例如On,Off,True,False,Yes,No和None),一個表達式(例如E_ALL & ~E_NOTICE),
; 或是用引號括起來的字元串(例如"foo").
;
; INI檔案中的表達式被限製為下面的運算符:
; | 代表 OR
; & 代表 AND
; ~ 代表 NOT(except)
; ! 代表 NOT
;
; 其中佈爾值可用1,On,True或Yes表示設為開的狀態,
; 可用0,Off,False或No表示設為關的狀態.
;
; 一個空字元串可以以在等號後不寫任何東西的方法表示,或者用None表示.例如:
;
; foo = ; 將foo值設定為空字元串
; foo = none ; 將foo值設定為空字元串
; foo = "none" ; 將foo值設定為字元串'none'
;
; 如果您在值設定中使用常量,並且這些常量屬於動態調入的擴展庫(PHP擴展或Zend擴展),
; 那麼,您只能在調入這些擴展庫之後再使用這些常量.
;
; 所有在 php.ini-dist 檔案裡設定的值與內建的預設值相同(就是說,如果 php.ini
; 沒被使用或者你刪掉了這些行,預設值與之相同).


;;;;;;;;;;;
; 語言選項;
;;;;;;;;;;;

; 是否使PHP腳本語言在Apache伺服器下有效.
engine = On

; 是否允許使用<? ?>這種簡單的標識格式,當設定為Off時只有<?php ?>這種標識能被識別.
short_open_tag = On

; 是否允許使用ASP風格的標識格式<% %>.
asp_tags = Off

; 浮點類型數顯示時的有效位數.
precision = 12

; 是否開啟2000年適應 (可能在非2000年適應的瀏覽器中導致問題).
y2k_compliance = Off

; 輸出緩存允許你甚至在輸出正文內容之後發送header標頭(包括cookies), 但這樣會使速度有些下降.
; 您可以在運行時使用輸出緩存功能,也可以把output_buffering的值設為On使所有檔案的輸出緩存打
; 開.您也可以使用一個數值(單位是byte)作為輸出緩存上限,例如: output_buffering=4096.
output_buffering = 4096

; 您可以把腳本輸出到一個函數,
; 字元編碼將會自動地轉換為您指定的編碼,這樣可能會對您處理以及記錄日誌有所幫助.
; 例如,如果您把 output_handler 設為 ob_iconv_handler,
; 輸出會為支援gzip或deflate編碼的瀏覽器設一個輸出處理器自動地開啟輸出緩衝.
;
; 說明: 您不必完全依照這個檔案中的設定去編寫腳本程式,相反地,您應該使用ob_start()函數
; 具體設定,如果您在不瞭解正在被執行的腳本的情況下使用這個INI檔案中的配置,就有
; 可能引起一些問題.
; 您不能同時使用"ob_gzhandler" 和 "zlib.output_compression".
;output_handler =

; 輸出會為支援壓縮使用了zlib庫
; 這個選項的有效值是'off','on',或者一個具體的值,預設值是4KB.
; 說明: 您可以增大數值來增加執行效率.
; 您必須使用zlib.output_handler來替代標準的output_handler否則輸出緩存會失效.
; .
zlib.output_compression = Off

; 如果zlib.output_compression被設為On,您就不能再額外地指定輸出的值.
; 在不同在設定下,結果是一樣的.
;zlib.output_handler =

; 強制更新使PHP輸出層在每個輸出塊之後自動更新自身資料.
; 這等效於在執行每個print()或echo()或每個HTML塊後調用flush()函數.
; 開啟這項設定可能會在運行時導致嚴重的衝突,建議僅在debug過程中開啟.
implicit_flush = Off

; 得到一個串行變量,並將其轉化為PHP值,可能為整型,雙精度,字元串,數組,或對像.
; 如果些函數發現了未定義的或類或參數,將會出現提示,如果您想使用這一函數,請設定
; 這個功能.
unserialize_callback_func=

; 是否強迫函數調用時按引用傳遞參數,在將來的PHP/Zend中,這一功能很可能不會再被支援,
; 建議您把此項設為Off,並在腳本中用函數聲明此變量,以便在將來的PHP下正常運行.
allow_call_time_pass_reference = Off

; 安全模式
; 是否啟用安全模式
safe_mode = Off

; 預設設定為Off,在開啟檔案時,安全模式會作一個UID對比檢查,如果設定為On,則作GID對比.
safe_mode_gid = Off

; 如果PHP在安全模式下運行,UID/GID檢查將在這個命令指定的檔案夾及其子檔案夾中進行.
safe_mode_include_dir =

; 如果PHP在安全模式下運行,system()和其它執行系統程式的函數都只能執行這個指令所指定
; 的目錄
safe_mode_exec_dir =

; 改變某些環境變量可能是一個有效的安全措施.
; 這個指令包括了一個含有符號的前綴.在安全模式下,會員只能改變或設定以這裡指定的前綴
; 的名字的環境變量.
; 說明: 如果不指定前綴,PHP會允許會員任意修改環境變量.
safe_mode_allowed_env_vars = PHP_

; 這個指令包含了一個符號,使得會員不能使用putenv()函數修改環境變量.
; 即使safe_mode_allowed_env_vars設定為允許會員修改,這些環境變量也會受到保護.
safe_mode_protected_env_vars = LD_LIBRARY_PATH

; 如果設定了open_basedir,將會使所有被定義的目錄及其子目錄的操作受到限制,這一指令在
; 每一個目錄和每一個虛擬主機構造檔案中著很大的作用.不論safe_mode被設定為On或是Off,
; 這個指令都不會受到任何影響.
;open_basedir =

; 這個指令允許您基於安全原因限制某些函數的使用.
; 如果您想禁用多個函數,可以在函數間用逗號隔開. 同樣地,
;不論safe_mode被設定為On或是Off,這個指令都不會受到任何影響.
disable_functions =

; 語法以高亮度模式顯示的色彩.所有能被<font color="??????">接受的東西就可以運行.
;highlight.string = #DD0000
;highlight.comment = #FF9900
;highlight.keyword = #007700
;highlight.bg = #FFFFFF
;highlight.default = #0000BB
;highlight.html = #000000


;;;;;;;;;;;;
; 雜項設定 ;
;;;;;;;;;;;;
; 是否承認您的伺服器上安裝了PHP這一事實(例如通過附加簽名到WEB伺服器上)
; 這個指令不會引起安全問題,但它使檢查你的伺服器上是否安裝了PHP有了可能.
expose_php = On


;;;;;;;;;;;;
; 資源限制 ;
;;;;;;;;;;;;

max_execution_time = 15 ; 每個腳本的最大執行時間, 按秒計.
max_input_time = 60    ; 每個腳本的最大讀取資料時間, 按秒計.
memory_limit = 8M ; 一個腳本可使用記憶體的最大值 (這裡是8MB).

;;;;;;;;;;;;;;;;;;
; 錯誤控制和記錄 ;
;;;;;;;;;;;;;;;;;;

; 錯誤報告是按比特記的,或者將數字加起來得到想要的錯誤報告等級.
; E_ALL - 所有的錯誤和警告.
; E_ERROR - 運行時的嚴重錯誤.
; E_WARNING - 運行時的警告(並不是非常嚴重的).
; E_PARSE - 編譯時解析錯誤.
; E_NOTICE - 運行時提醒(這些經常是是你的代碼的bug引起的,
; 也可能是有意的行為造成的(如基於未初始化的變量自動初始化為一個
; 空字元串而使用一個未初始化的變量).
; E_CORE_ERROR - 發生於PHP啟動時初始化過程中的致命錯誤.
; E_CORE_WARNING - 發生於PHP啟動時初始化過程中的警告(非致命性錯).
; E_COMPILE_ERROR - 編譯時致命性錯誤.
; E_COMPILE_WARNING - 編譯時警告(非致命性錯).
; E_USER_ERROR - 會員產生的出錯消息.
; E_USER_WARNING - 會員產生的警告消息.
; E_USER_NOTICE - 會員產生的提醒消息.
;
; 例子:
;
; - error_reporting = E_ALL & ~E_NOTICE 顯示所有的錯誤,除了提醒.
;
; - error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR 僅顯示錯誤.
;
error_reporting = E_ALL & ~E_NOTICE

; 顯示錯誤(作為輸出的一部分).在WEB網站上,建議您關掉這個功能,並用錯誤日誌的方式來代替.
; 如果開啟此功能可能會給您帶來安全問題,例如檔案在伺服器上的路徑和您的資料庫或其它訊息.
; 不過在Debug過程中,開啟此項會給調試程式帶來極大的方便.
display_errors = On

; 如果display_startup_errors設定為Off,即使display_errors被設定成On,
; 在PHP啟動過程中的錯誤也不會被顯示.如果不是在Debug過程中,建議您關閉此項.
display_startup_errors = On

; 在日誌檔案中記錄錯誤(伺服器日誌,stderr標準錯誤輸出, 或者error_log (下面的)).
; 正如上面說明的那樣,強烈建議你在最終發表的web網站時以日誌方式記錄錯誤.
log_errors = Off

; 設定錯誤日誌檔案最大值.預設大小是1024M.
log_errors_max_len = 1024

; 不記錄重複的訊息.在ignore_repeated_source被設為On前,重複的訊息一定發生在同一文
; 件的同一行
ignore_repeated_errors = Off

; 忽略重複多次的訊息.如果ignore_repeated_source被設為On,您將不能記錄不同檔案或不同行
的相同訊息.
ignore_repeated_source = Off

; 如果此命令設為Off,記憶體溢出將不會被顯示.
; 而這只在Debug, 並且error reporting中包含E_WARNING時才有意義.
report_memleaks = On

; 是否在$php_errormsg中存儲錯誤/警告訊息(布爾).
track_errors = Off

; 是否在錯誤訊息中包含HTML語法錯誤.
html_errors = On

; 如果您已經讓PHP記錄HTML錯誤,並想通過在錯誤頁面上的按這裡來獲得詳細訊息,
; 您可以從http://www.php.net/docs.php下載一個文件,
; 並且修改docref_root來使用這個文件,這個值必須以'/'開頭,您也必須指定該文件的副檔名.
;docref_root = /phpmanual/
;docref_ext = .html

; 在錯誤訊息輸出前的字元.
;error_prepend_string = "<font color=ff0000>"

; 在錯誤訊息輸出後的字元.
;error_append_string = "</font>"

; 用於記錄錯誤日誌的指定檔案.
;error_log = filename

; 用系統日誌記錄錯誤(NT,XP,w2k下的事件觀看器,WIN95和WIN98下無效).
;error_log = syslog


;;;;;;;;;;;;
; 資料處理 ;
;;;;;;;;;;;;
;
; 說明 - track_vars 在PHP 4.0.3中是一直啟動的

; 在PHP中分隔URL的符號,預設是 "&".
;arg_separator.output = "&amp;"

; 在變量中插入URL的分隔符號,預設是 "&".
; 說明: 任何字元在這裡都是作為分隔符的!
;arg_separator.input = ";&"

; 這條指示描述了PHP記錄GET,POST,Cookie,Environment和Built-in這些變量的順序.
; 以G,P,C,E和S代表,通常以EGPCS或GPC的方式引用,按從左到右記錄,最新的記錄覆蓋較舊的.
variables_order = "EGPCS"

; 是否將這些 EGPCS 變量註冊為全局變量.
; 若你不想讓會員資料不在全局範圍內混亂的話,你可以想關閉它.
; 這和 track_vars 連起來用更有意義 — 這樣你可以通過$HTTP_*_VARS[] 數組瀏覽所有的GPC變量.
; 建議您儘量不使用全局變量,因為它有可能引起安全問題,所以這個指令是不被推薦的.
register_globals = On

; 是否啟用argv和argc變量(這裡argv為數組,argc為變量數).
; 如果您不使用這些變量,您可以設為Off來增加PHP的執行效率.
register_argc_argv = Off

; PHP能接收POST資料的最大值.
post_max_size = 4M

; 不推薦您使用此指令,推您使用variables_order來代替.
gpc_order = "GPC"

;;;;;;;;;;;;
; 魔術引用 ;
;;;;;;;;;;;;

; 是否對引入的GET/POST/Cookie資料啟用魔術引用.
magic_quotes_gpc = On

; 是否對運行時產生的資料啟用魔術引用,例如用SQL搜尋得到的資料,用exec()函數得到的資料等.
magic_quotes_runtime = Off

; 是否使用Sybase形式的魔術引用(即用'代替'').
magic_quotes_sybase = On

; 在PHP文件前的後自動填加檔案.
auto_prepend_file =
auto_append_file =

; 像4.0b4一樣,PHP總是預設地在"Content-type:"頭標輸出一個字元的編碼方式
; 只要設定為空,就會取消這個字元了.PHP的內建預設值是text/html.
default_mimetype = "text/html"
;default_charset = "iso-8859-1"

; 是否一直使用$HTTP_RAW_POST_DATA變量.
always_populate_raw_post_data = Off

; 是否允許處理PHP腳本以外的HTTP請求.
; 如果您想獲得這些請求的資料, 您必須同時設定always_populate_raw_post_data變量.
;allow_webdav_methods = On

;;;;;;;;;;;;
; 路徑設定 ;
;;;;;;;;;;;;

; UNIX伺服器使用如下路徑: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows伺服器使用如下路徑: "path1;path2"
;include_path = ".;c:phpincludes"

; PHP檔案的根目錄, 僅在非空時有效,如果PHP被設定為安全模式,PHP不會處理此目錄以外檔案.
doc_root =

; 在使用/~username動工開啟腳本時,PHP尋找該腳本的路徑,同樣地僅在非空時有效.
user_dir =

; 存放可加載的擴展庫(模塊)目錄的路徑.
extension_dir = ./

; 是否啟用dl()函數.在多線程的服務上(如IIS和Zeus)dl()函數不能很好的工作,
; 在多線程服務上該指令預設被禁止.
enable_dl = On

; 在很多伺服器上,以CGI形式運行PHP來提高安全性能.預設設定下,PHP設其為On.
; 您可以在這裡關掉它,但關掉以後是有風險的.但在IIS下您則可以毫無風險的關掉它,
; 事實上,在IIS下您必須關掉它.
; cgi.force_redirect = 1

; 如果cgi.force_redirect功能開啟,並且您不是在Apache或Netscape(iPlanet)伺服器下運行,
您可能須要設定一個環境變量名,PHP將尋找此變量來確定可以繼續執行,設定此變量可能會引起
安全問題,避免的方法是先弄清楚您在作什麼~~~
; cgi.redirect_status_env = ;

; 此選項提供了在IIS伺服器下的智能化安全解決風格,如果在IIS下請設為On,目前不支援Apache
; 伺服器(2002年3月17日),預設值是0.
; fastcgi.impersonate = 1;

; 在發送HTTP響應時cgi.rfc2616_headers告訴PHP使用哪種headers.
; 如果設為0,PHP的發送情況是被Apache所支援的,如果設為1,PHP將發送自適應的RFC2616headers.
; 在IIS下,請設其值為1,預設值是0.
;cgi.rfc2616_headers = 0


;;;;;;;;;;;;
; 檔案上傳 ;
;;;;;;;;;;;;

; 是否允許以HTTP方式上傳檔案.
file_uploads = On

; 以HTTP方式上傳檔案的臨時目錄 (未指定時使用系統預設).
;upload_tmp_dir =

; 允許上傳檔案的最大值.
upload_max_filesize = 2M


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Fopen wrappers(這個俺不會譯5555~) ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; 是否允許把URLs(如http://和ftp://)當作檔案處理.
allow_url_fopen = On

; 指定一個匿名FTP瀏覽密碼(例如您的電子信箱)
;from="Neter@Neter.CN"

; 指定User-Agent字元串(User-Agent是啥呀?會員代理?55555555~)
; user_agent="PHP"

; 預設連接超時時間(以秒計).
default_socket_timeout = 60

; 如果您的腳本程式不是在蘋果機等作業系統下,而只是運行在unix或者win32系統下,
; 開啟這個變量將使PHP自動地檢查已結束的那些字元變量以便fgets()函數和file()函數
; 不受限制的表達.
; auto_detect_line_endings = Off


;;;;;;;;;;;;
; 動態擴展 ;
;;;;;;;;;;;;
;
; 如果您想讓動態擴展庫能夠自動的被加載,請使用下面的語法.
;
; extension=modulename.extension
;
; 例如在Windows下:
;
; extension=msql.dll
;
; 在UNIX下:
;
; extension=msql.so
;
; 注意後面的值只是模塊的名字,並不包含該模塊所在的目錄,您應該用上面的extension_dir
; 來指示指定擴展庫的路徑.



;Windows擴展
;注意:PHP已經內建了對MySQL和ODBC支援,所以不必再為其配置任何dll擴展.
;
;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
;extension=php_exif.dll
;extension=php_fbsql.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
;extension=php_gd.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zip.dll


;;;;;;;;;;;;
; 模塊設定 ;
;;;;;;;;;;;;

[系統日誌]
; 是否定義各種系統日誌變量(如$LOG_PID,$LOG_CRON等).關掉這個指令將會提高效率.
; 您可以在運行時使用define_syslog_variables()函數來定義這些變量.
define_syslog_variables = Off

[郵件功能]
; 僅在Windows下.
SMTP = localhost

; 僅在Windows下.
sendmail_from = Administrator@localhost.com

; 僅在Unix下.您也可以指定參數(預設值是: "sendmail -t -i").
;sendmail_path =

[Java]
;java.class.path = .php_java.jar
;java.home = c:jdk
;java.library = c:jdkjre inhotspotjvm.dll
;java.library.path = .

[SQL]
sql.safe_mode = Off

[ODBC]
;odbc.default_db = Not yet implemented
;odbc.default_user = Not yet implemented
;odbc.default_pw = Not yet implemented

; 是否允許持續連接.
odbc.allow_persistent = On

; 是否在重用前檢查連接可用性.
odbc.check_persistent = On

; 允許持續連接的最大值.-1代表無限制.
odbc.max_persistent = -1

; 允許連接的最大值(持續連接和非持續連接的和).-1代表無限制.
odbc.max_links = -1

; 控制LONG類型的字段.返回變量的大小(比特).0代表不控制.
odbc.defaultlrl = 4096

; 控制二進制資料.0不控制,1保持,2轉換成字元.
; 可參見有關odbc_binmode和odbc_longreadlen的文件
; 以得到uodbc.defaultlrl和uodbc.defaultbinmode的解釋.
odbc.defaultbinmode = 1

[MySQL]
; 是否允許持續連接.
mysql.allow_persistent = On

; 允許持續連接的最大值.-1代表無限制.
mysql.max_persistent = -1

; 允許連接的最大值(持續連接和非持續連接的和).-1代表無限制.
mysql.max_links = -1

; mysql_connect()函數的預設端口.如不設定,mysql_connect()將使用$MYSQL_TCP_PORT或者
; 在/etc/services下的mysql-tcp或者編譯定義的MYSQL_PORT(nuix)依次搜尋,而在Win32下,將
; 僅檢查MYSQL_PORT.
mysql.default_port = 3306

; 用於本地MySql連接的預設socket,為空時,使用內建值.
mysql.default_socket = MySql

; mysql_connect()連接的預設主機(安全模式下無效).
mysql.default_host = localhost

; mysql_connect()連接時的預設會員名稱(安全模式下無效).
mysql.default_user = root

; mysql_connect()連接時的預設密碼(安全模式下無效).
; 注意,在這裡使用密碼十分危險,因為任何有PHP權限的會員都可以通過運行'echo get_cfg_var("mysql.default_password")'
; 的方法來獲得該密碼,當然,任何有瀏覽權限的會員也可以得到此密碼.
mysql.default_password =

; 連接超時的最大值(以秒計).-1代表無限制.
mysql.connect_timeout = -1

; 鑑定報告模式.如果此模式被啟動(即設為On),關於table/index和MYSQL錯誤將會被列出.
mysql.trace_mode = Off

[mSQL]
; 是否允許持續連接.
msql.allow_persistent = On

; 允許持續連接的最大值.-1代表無限制.
msql.max_persistent = -1

; 允許連接最大值(持續連接與非持續連接的和).-1代表無限制.
msql.max_links = -1

[PostgresSQL]
; 是否允許持續連接.
pgsql.allow_persistent = On

; 是否使用pg_pconnect()函數檢查中斷的持續連接.Need a little overhead(55555俺又不懂了).
pgsql.auto_reset_persistent = Off

; 允許持續連接的最大值. -1代表無限制.
pgsql.max_persistent = -1

; 允許連接的最大值(持續連接與非持續連接的和).-1代表無限制.
pgsql.max_links = -1

; 是否忽略PostgreSQL的返回訊息.
pgsql.ignore_notice = 0

; 是否記錄PostgreSQL的返回訊息.
; 僅當pgsql.ignore_notice=0時,模塊才能記錄該訊息.
pgsql.log_notice = 0

[Sybase]
; 是否允許持續連接.
sybase.allow_persistent = On

; 允許持續連接的最大值.-1代表無限制.
sybase.max_persistent = -1

; 允許連接的最大值(持續連接與非持續連接的和).-1代表無限制.
sybase.max_links = -1

;sybase.interface_file = "/usr/sybase/interfaces"

; 顯示錯誤的最低嚴重性.
sybase.min_error_severity = 10

; 顯示訊息的最低嚴重性.
sybase.min_message_severity = 10

; 與舊的版本(PHP3.0)兼容.如果設為On,PHP將根據它們的Sybase類型自動地賦值到結果中,
; 而不是把它們全當作字元串處理,此模式在將來不再被支援,所以儘量對代碼進行修改,並
; 關掉這項.
sybase.compatability_mode = Off

[Sybase-CT]
; 是否允許持續的連接.
sybct.allow_persistent = On

; 允許持續連接的最大值.-1代表無限制.
sybct.max_persistent = -1

; 允許連接的最大值(持續連接與非持續連接的和).-1代表無限制.
sybct.max_links = -1

; 伺服器訊息最小顯示量.
sybct.min_server_severity = 10

; 客戶訊息最小顯示量.
sybct.min_client_severity = 10

[dbx]
; 通過對dbx.colnames_case的設定,返回的數組名能夠轉換成兼容的值.
; "unchanged" (在不設定時的預設值)
; "lowercase" (小寫)
; "uppercase" (大寫)
; 推薦不區分大小寫字母,但是由於兼容性的限制我們不得不把大小寫區分開.
dbx.colnames_case = "unchanged"

[bcmath]
; 用於所有bcmath函數的10十進制數小數的個數.
bcmath.scale = 0

[browscap]
;browscap = extra/browscap.ini

[Informix]
; ifx_connect()的預設主機(安全模式下無效).
ifx.default_host =

; ifx_connect()的預設會員(安全模式下無效).
ifx.default_user =

; ifx_connect()的預設密碼(安全模式下無效).
ifx.default_password =

; 是否允許持續連接.
ifx.allow_persistent = On

; 允許持續連接的最大值.-1代表無限制.
ifx.max_persistent = -1

; 允許連接的最大值(持續連接與非持續連接的和).-1代表無限制.
ifx.max_links = -1

; 若開啟,select狀態符將返回一個byte blobs而不是它的ID.
ifx.textasvarchar = 0

; 若開啟,select狀態符將返回一個text content而不是它的ID.
ifx.byteasvarchar = 0

; 從固定長度的字元列裡分離出空格.可能對Informix SE會員有效.
ifx.charasvarchar = 0

; 若開啟, text和byte blobs的內容被導出到一個檔案,而不是儲存在記憶體中.
ifx.blobinfile = 0

; NULL(空)被作為空字段返回,除非,這裡被設為1,這種情況下(為1)NULL作為字串NULL返回.
ifx.nullformat = 0

[Session]
; 用於儲存/取得取資料的控制方式.
session.save_handler = files

; session的儲存路徑.
; 說明1: PHP不會建立這個檔案夾,您必須自行建立.
;
; 說明2: 如果您使用子檔案夾進行存儲,請檢查下面的路徑.
session.save_path = /tmp

; 是否使用cookies.
session.use_cookies = 1

; 這個選項能夠使會員避免由於session名被作為URLs的一部分顯示而受到的攻擊.
; 預設值是0.
; session.use_only_cookies = 1

; session的名稱(同時作為cookie的名稱).
session.name = PHPSESSID

; 是否在請求開始時初始化session.
session.auto_start = 0

; cookie的儲存時間(以秒計),設為0時,瀏覽器關閉時不再儲存.
session.cookie_lifetime = 0

; cookie的有效路徑.
session.cookie_path = /

; cookie的有效域.
session.cookie_domain =

; 控制連續的資料.PHP是PHP資料的標準控制器.
session.serialize_handler = php

; 定義'garbage collection'(碎片整理)程序的初始化比率
; 這個比率是通過gc_probability/gc_dividend算出的.
; e.g. 1/100 means 1%.

session.gc_probability = 1
session.gc_dividend = 100

; 在指定的秒數後,存儲的資料將會被看作'碎片'並且被碎片整理程序清理掉.
; 警告: 您的檔案系統會定期的存儲資料,FAT系統除外.所以應該使用特別的方法來刪除sessions.
session.gc_maxlifetime = 1440

; 說明: 如果您使用檔案夾來存儲session檔案(觀看session.save_path中的設定),
; 碎片整理不會自動的運行,您必須通過其它方法整理這些碎片.
; 例如下面的方法和把session.gc_maxlifetime設成1440(1440秒=24分)是等效的.
; cd /path/to/sessions; find -cmin +24 | xargs rm

; 在PHP4.2及更早的版本中沒有正式的檔案允許您初始一個處於全局的session變量,即使是在
; register_globals被禁用的情況下.PHP4.3及以後版本中,如果此功能被使用,PHP提醒您.
; 您可以對此功能和警告訊息單獨禁用,此時,如果bug_compat_42是啟動的,僅會顯示警告訊息.

session.bug_compat_42 = 1
session.bug_compat_warn = 1

; 檢查HTTP引用使額外包含於URLs中的ids無效.
; HTTP_REFERER應該包含有效的session字段作為子鏈.
session.referer_check =

; 從檔案中讀取字元的大小.
session.entropy_length = 0

; 在這裡指定session id.
session.entropy_file =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

; 設定為{nocache,private,public,}來決定HTTP的緩存問題,
; 或者不進行設定來避免發送明顯的headers.
session.cache_limiter = nocache

; 文件在指定時間(以分計)後過期.
session.cache_expire = 180

; 預設情況下不支援過渡sid.使用此功能時您會收到警告訊息.
; 使用過渡sid是有風險的.因為:
;
; - 會員可以發送包含處於啟動狀態的session ID的URL給其它人.
;
; - 包含處於啟動狀態的session ID的URL會存在於容易接近的公共電腦裡.
;
; - 會員可以通過使用存儲於瀏覽器歷史記錄或書籤中相同的session ID來瀏覽您的網站.
;
session.use_trans_sid = 0

; 重寫URL時將從定義的HTML標籤中尋找form/fieldset是特殊的,如果您在這裡使用它們,
; 就會附;加一個隱藏的<input>,其訊息不同與其它的對URLs的附加.如果您想符合XHTML,
; 刪除form記錄.注意:所有有效的命令必須包含一個"="號,即使命令後面沒有具體值.
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

[MSSQL]
; 是否允許持續連接.
mssql.allow_persistent = On

; 允許持續連接的最大值.-1表示無限制.
mssql.max_persistent = -1

; 允許連接的最大值(持續連接與非持續連接的和).-1表示無限制.
mssql.max_links = -1

; 顯示最小錯誤嚴重性.
mssql.min_error_severity = 10

; 顯示最小訊息重要性.
mssql.min_message_severity = 10

; 是否開啟與舊的PHP 3.0兼容的模式.
mssql.compatability_mode = Off

; 有效範圍0 - 2147483647.預設值是4096.
;mssql.textlimit = 4096

; 有效範圍0 - 2147483647.預設值是4096.
;mssql.textsize = 4096

; 限制每一批中的記錄數量.設為0時表示所有記錄記錄在一批中.
;mssql.batchsize = 0

; 當連接到伺服器時使用NT驗證.
mssql.secure_connection = Off

; 指定最大程序數.預設是25
;mssql.max_procs = 25

[Assertion]
; Assert(expr);預設值是啟動的.(俺不行了,這組指令譯不過來了55555)
;assert.active = On

; Issue a PHP warning for each failed assertion.
;assert.warning = On

; Don't bail out by default.
;assert.bail = Off

; User-function to be called if an assertion fails.
;assert.callback = 0

; Eval the expression with current error_reporting(). Set to true if you want
; error_reporting(0) around the eval().
;assert.quiet_eval = 0

[Ingres II]
; 是否允許持續連接.
ingres.allow_persistent = On

; 允許持續連接在最大值. -1代表無限制.
ingres.max_persistent = -1

; 允許連接的最大值.-1代表無限制.
ingres.max_links = -1

; 預設的database(格式是: [node_id::]dbname[/srv_class]).
ingres.default_database =

; 預設會員.
ingres.default_user =

; 預設密碼.
ingres.default_password =

[Verisign Payflow Pro]
; 預設的Payflow Pro伺服器.
pfpro.defaulthost = "test-payflow.verisign.com"

; 伺服器的預設端口.
pfpro.defaultport = 443

; 預設的超時時間(以秒計).
pfpro.defaulttimeout = 30

; 預設代理伺服器IP位址(如果須要).
;pfpro.proxyaddress =

; 預設代理伺服器端口.
;pfpro.proxyport =

; 預設的登入名.
;pfpro.proxylogon =

; 預設的登入密碼.
;pfpro.proxypassword =

[Sockets]
; 是否使用系統的read()功能來替代php_read().
sockets.use_system_read = On

[com]
; 指向包含GUIDs,IIDs或典型靜態庫檔案的檔案名稱的檔案的路徑.
;com.typelib_file =
; 是否允許調用分佈式的COM檔案
;com.allow_dcom = true
; 是否自動把組成典型靜態庫檔案的常量註冊到com_load()函數.
;com.autoregister_typelib = true
; 是否區分常量的大小寫
;com.autoregister_casesensitive = false
; 是否在有重複的常量出現時顯示錯誤
;com.autoregister_verbose = true

[Printer]
;printer.default_printer = ""

[mbstring]
; 語言選擇.
;mbstring.language = Chinese

; 語言/腳本的編碼.
; 某些編碼不能作為本地的語言編碼,例如SJIS, BIG5, ISO-2022-.
;mbstring.internal_encoding = GB2312

; http輸入編碼.
;mbstring.http_input = auto

; http輸出編碼.mb_output_handler必須註冊為函數的輸出緩存.
;mbstring.http_output = SJIS

; 是否根據mbstring.internal_encoding的設定自動翻譯編碼. 把這項設為On可以把輸入字元
; 轉換為設定的編碼語言.
; 說明: 一定不要使用這項功能編譯靜態庫檔案和某些軟體.
;
;mbstring.encoding_translation = Off

; 編碼檢查順序.
;mbstring.detect_order = auto

; 當字元不能夠被轉換時,是否使用substitute_character.
;mbstring.substitute_character = none;

; 是否用加密的字元覆蓋沒有加密的字元.例如用mb_send_mail(), mb_ereg()覆蓋
; mail(), ereg()等.有效的值是0,1,2,4或者它們的組合.例如,7代表覆蓋全部.
; 0: 不覆蓋
; 1: 覆蓋mail()函數
; 2: 覆蓋str*()函數
; 4: 覆蓋ereg*()函數
;mbstring.func_overload = 0

[FrontBase]
;fbsql.allow_persistent = On
;fbsql.autocommit = On
;fbsql.default_database =
;fbsql.default_database_password =
;fbsql.default_host =
;fbsql.default_password =
;fbsql.default_user = "_SYSTEM"
;fbsql.generate_warnings = Off
;fbsql.max_connections = 128
;fbsql.max_links = 128
;fbsql.max_persistent = -1
;fbsql.max_results = 128
;fbsql.batchSize = 1000

[Crack]
; 修改下面的設定,使這與cracklib檔案夾的本地路徑相符合,只可以使用基本的檔案名稱,
; 不包含副檔名.
; crack.default_dictionary = "c:phplibcracklib_dict"

[exif]
; 這組就不用譯了吧
; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
; With mbstring support this will automatically be converted into the encoding
; given by corresponding encode setting. When empty mbstring.internal_encoding
; is used. For the decode settings you can distinguish between motorola and
; intel byte order. A decode setting cannot be empty.
;exif.encode_unicode = ISO-8859-15
;exif.decode_unicode_motorola = UCS-2BE
;exif.decode_unicode_intel = UCS-2LE
;exif.encode_jis =
;exif.decode_jis_motorola = JIS
;exif.decode_jis_intel = JIS

; Local Variables:
; tab-width: 4
; End:


2018年5月18日 星期五

css template 樣板網站

 css template 樣板網站

除此之外,這裡下載的網頁版型還有附上 PSD 原始檔,真是佛心來的~

「Free Website Templates」網址 http://www.freewebsitetemplates.com/

Open Source Web Design
http://www.oswd.org

templatemo.com
http://www.templatemo.com

freecsstemplates.org
http://www.freecsstemplates.org

MyFreeCSSTemplates.com
http://www.myfreecsstemplates.com

https://templated.co/


現今的網頁設計主流該是HTML+CSS+JavaScript,
過去使用表格加上巢狀表格的呈現方式,會阻礙搜尋引擎到你的網站拜訪!
如果你的網站已稍具知名度,當然不用擔心。

但是,新建立的網站最迫切希望的就是被網友是用關鍵字找到,
在這方面,CSS的版面呈現因為都是使用文字,占了先天優勢。
所以,以下提供幾個CSS的網頁版型下載網站,

http://www.freecsstemplates.org/

http://ramblingsoul.com/

http://www.oswd.org/

http://www.free-css-templates.com/

當然,如果各位可以持續強化自己的CSS控制能力,
這些版型到了你手上,可以有更多變化,加油!

2018年5月17日 星期四

java 的加強版 for 迴圈 (for each迴圈)

java 的加強版 for 迴圈 (for each迴圈)
java 的 for 迴圈出現一種以前從沒有看過的格式。它是JAVA 5.0 後多的一種 for 迴圈寫法,目的是簡化陣列與集合物件的元素存取方式.
在JDK 5.0版新增加強型的for迴圈,其功能類似其他程式語言的foreach迴圈,可以輕鬆走訪陣列或集合物件的元素。

for-each 迴圈語法

for (型別 變數 : 集合或陣列物件參考或函式呼叫) {迴圈內程序}

冒號前面稱為宣告式, 後面稱為運算式. 宣告式的變數型別必須與陣列或集合的元素相容, 此變數將用在迴圈內部以便存取元素. 運算式可以是集合或陣列物件參考, 也可以是函式呼叫 (傳回陣列或集合).


舉例:

* for迴圈新舊寫法的對照
public class NewFor {
public static void main(String[] args) {

String [] a = {"1","3","5","7","9","11"};

//5.0前的for迴圈寫法
for(int i = 0 ; i < a.length ; i++){
String temp = a[i];
System.out.print(temp + ", ");
}

System.out.println();

//5.0後for迴圈也可以用這種新的寫法(for-each)
for(String temp : a){
System.out.print(temp + ", ");
}


* 用字串變數name配合加強型的for迴圈(for-each)來走訪names[]陣列

String[] names;
for ( String name: names )
{

System.out.print('\"'+name+"\"(字串長度:");
System.out.println(name.length() + ")");

}

可以看到程式碼比傳統用法更簡潔



* 用for 迴圈印出二維陣列之元素
int[][] a={{1,2},{3,4,5}, {6,7,8,9}};
for (int[] i : a) {
System.out.print(i.length);} //印出二維陣列的元素個數 2 3 4 (a[0]有二個元素{1,2}, a[1]有三個元素{3,4,5}, a[2]有四個元素{6,7,8,9})

for (int i : a[2]) {System.out.print(i);} //印出二維陣列第三個元素的內容6 7 8 9



* 以上範例均以陣列為例,如果用在集合物件的寫法
for (ScoreDoc scoreDoc : hits.scoreDocs) {
Document doc = searcher.doc(scoreDoc.doc);
System.out.println(doc.get("fullpath"));
}

這是我練習java時所寫的一個例中,hit.scoreDocs 為一集合物件,內含不定個數的物件,scoreDoc每次迴圈執行時,均會取得其中一個物件,for 迴圈遍歷結束後,便會把hit.scoreDocs內所有物件,指定給Document 型別的物件 doc , 並印出該文件的路徑。

如果用傳統寫法,應該是以下的樣子:
ScoreDoc scoreDoc;
for (int i=0;i<hits.scoreDocs.length;i++){
scoreDoc=hits.scoreDocs[i];
Document doc = searcher.doc(scoreDoc.doc);
System.out.println(doc.get("fullpath"));
}

參考:
http://tony1966.myweb.hinet.net/java/core/flow_control.htm

http://www.ibm.com/developerworks/library/j-forin/index.html


補充:
很多程式語言都有支援for-each這類的語法,簡單的說for-each語法就是當我們想要存取一個 Array 或 Collection 裡面所有的元時可以更方便、更有效率的語法。for-each 也有人稱為 enhanced for 或 for-in。

使用上要注意的事項有:

只適用於 Java 5.0 以後的版本
只適用於有 implement Iterable 的類別基本上 Array 與 Collection 類別都沒問題。
只能存取裡面元素而不能置換掉它,記住,for-each 裡面的變數是 local 變數離開 for-each 之後就會消失。
只能同時針對一個 Array 或 Collection 進行操作。
只能同時針對一個元素操作。
只能從頭開始訪問每個元素。

2018年5月16日 星期三

取得使用者輸入 Scanner


Scanner(讀取)

5801Scanner(讀取)

Scanner 取得使用者輸入的數字或字串 會根據空白鍵 tab鍵 跳下一個輸入 enter鍵表示輸入完成

        

Scanner是一種類別 要new一個物件出來

Scanner sc=new Scanner (System.in);

記得要import進來

import java.util.Scanner



nextInt()     取得使用者輸入或檔案內容中的整數

nextFloat() 取得使用者輸入或檔案內容中的浮點數

NextLine()     取得使用者輸入或檔案內容中的字串 包含空白鍵 tab等按鍵  enter表示輸入完成

next()         取得使用者輸入或檔案內容中的字串 不包含空白鍵 tab等按鍵



範例1 讀取鍵盤輸入

import java.util.Scanner;

public class ScannerTest {

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);

        String s1 = sc.next();

        System.out.println(s1);

    }

}



範例2 讀取鍵盤輸入

int num1, num2, num3;

public class ScannerTest {

    public static void main(String[] args){

        Scanner scanner = new Scanner(System.in);

        System.out.println("請輸入三個數字(以空白鍵分開):");

        num1 = scanner.nextInt();

        num2 = scanner.nextInt();

        num3 = scanner.nextInt();

        System.out.println("您輸入第一個數字為:" + num1 );

        System.out.println("您輸入第二個數字為:" + num2 );

        System.out.println("您輸入第三個數字為:" + num3 );


    }

}



範例3 讀取檔案內容

import java.io.File;

import java.util.Scanner

public class read{

    public static void main(String[] args){

        try()

        catch(Exception e){        

        }

    }


取得使用者輸入 Scanner


Scanner取得輸入會依據空白字元、空白鍵、Tab,傳回下一個輸入。
 第一種 nextInt():取得使用者輸入的整數

import java.util.Scanner;

public class Scanner_test {
    public static void main(String[] args) {
        int num1, num2, num3;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("請輸入三個數字(以空白鍵分開):");
        num1 = scanner.nextInt();
        num2 = scanner.nextInt();
        num3 = scanner.nextInt();
        System.out.println("您輸入第一個數字為:" + num1 );
        System.out.println("您輸入第二個數字為:" + num2 );
        System.out.println("您輸入第三個數字為:" + num3 );

    }
}

結果:
1
第二種 nextFloat():取得使用者輸入的浮點數

import java.util.Scanner;

public class Scanner_test {
    public static void main(String[] args) {
        float float1, float2, float3;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("請輸入三個浮點數(以Tab鍵分開):");
        float1 = scanner.nextFloat();
        float2 = scanner.nextFloat();
        float3 = scanner.nextFloat();
        System.out.println("您輸入第一個浮點數為:" + float1 );
        System.out.println("您輸入第二個浮點數為:" + float2 );
        System.out.println("您輸入第三個浮點數為:" + float3 );

    }
}

結果:

2

第三種 nextLine():取得使用者輸入的字串(包含空白字元、空白鍵、Tab)

import java.util.Scanner;

public class Scanner_test {
    public static void main(String[] args) {
        String str1, str2, str3;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("請輸入一字串:");
        str1 = scanner.nextLine();
        System.out.println("您輸入的字串一為:\n" + str1 );

    }
}

結果:

3

第四種 next():取得使用者輸入的字串(不包含空白字元、空白鍵、Tab)

import java.util.Scanner;

public class Scanner_test {
    public static void main(String[] args) {
        String str1, str2, str3;
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("請輸入一字串:(不包含空白字元、空白鍵、Tab)");
        str2 = scanner.next();
        System.out.println("您輸入的字串一為:\n" + str2 );
    }
}
結果:
4

Regular Expression 正則表示式做字串比對

Regular Expression 中文翻成正則表示式 英文簡寫為 Regex 或 RegExp RegExp 是用來比對字串是不是有符合正確的格式 語法很簡單而且大部分語言都有支援它 使用時機 譬如說你需要在程式內請使用者輸入生日 你規定的格式 1996-08...