???????????????????????????????????????????????????????PHP??????????????????????????????

     ????????з???????????????????????????????????????????????????????????????????????????????????????????????????????????????????y?????? PHP????????? ini ???????????????????

     ?????????????????????????????????????????????????????????????????????????????????????????????????????????е??

     ???????????????????????????????????????????? + ????????????????? + ????????????????? + ????????????????????????????????????????????????????ú????????????????????????????????? + ??????????????????????????????????????????????????????

     ?????????в?????????????????????????????????????????????????????к??е?????????????е??????????????????????????????????????????????????????????????????κ???????????з?????

     ???????????????????????????????????????????????????????????Щ????

1. ?????????????????????????????????п?????????????б???????

2. Ч?????????????????????????????????????????????

3. ????????????????????????????????????

4. ????????

     ???????????????????????????????????????????????????????????????????????????

??????????????

???????????о????????????????????????????????

1. ?????????????????????????????

2. ????????????μ???????????????????????

3. ??????????????????????

4. ?????????????????????windows??linux??FreeBSD???????????е?????

???????????????

????????????????? PHP??????????????? ini ??????????

     ???????? PHP??????? PHP ????????????????????????????????????顢?????????????????????????????ó???????? PHP ??????????????????? PHP ?????????????????????????????????????С?

     ???????? ini ??????????????????????? ini ????????? xml ????????????????????????????????? PHP ????? parse_ini_file ?????ú?????????????? ini ?????

??????

    ???????????????????????????????????潲?????????????к????????????????????Σ?????????????????????????????????????????κ??????仹?з????????????????????????£?

?嵥???example.ini

[field1]

datatype="list?? range=[10-20]"

prefix="int_"

postfix=" "

[field2]

datatype="list?? range=[A-Z?? a-z]"

prefix="char_"

postfix=" "

[field3]

prefix=""

datatype="list?? range=[abc??123??xyz?? 100-110]"

postfix=" "

[field4]

prefix=""

datatype="list?? range=[100-200:2]"

postfix=" "

?????????????????????

1. ????????[]??????????????? key=value ????????????????ε??????

2. ????????????????????datatype ?????ε?????Χ??prefix ?趨??ε?????postfix ???趨??ε?????

3. datatype ?л??????????????? list????????????????б?????????????????????ε?????Χ???? range??

4. range ??????????? 1-10 ??????????????????????? ?? ????????????????????????仹??????????????????

????? example.ini ????ж??????????Σ???κ???????????????????????????ε?????Χ? 10-20????? int_??????????????Χ???Сд??????????? char_???????????????Χ????????????????? 100 ?? 200??????????? 2 ??

?嵥?????????????

int_10 char_A abc 100

int_11 char_B 123 102

int_12 char_C xyz 104

int_13 char_D 100 106

int_14 char_E 101 108

int_15 char_F 102 110

int_16 char_G 103 112

int_17 char_H 104 114

int_18 char_I 105 116

int_19 char_J 106 118

????????

??????????? ini ???

error_reporting(0);

$iniFile = $argv[1]; // ???????????????????

$dataCount = $argv[2]; // ??????????????????????

$fields = parse_ini_file($iniFile?? true); // ?? ini ?????????????????顣

?????????????????ε????б?

foreach($fields as $fieldName => $field)

{

$list = array();

$equalPos = strpos($field[??datatype??]?? ??=??); // ?????????? range=[]

$range = substr($field[??datatype??]?? $equalPos + 2?? -1); // ??? range ???б?(????? [])

$items = explode(???????? $range); // ??????е? item ????

/* ??????????? item??????????????????? range ?????? */

foreach($items as $item)

{

if(strpos($item?? ??-??))

{

    list($min?? $max) = explode(??-???? $item);

    $list = array_merge($list?? range($min?? $max)); // ???? field ?? list ?б??С?

}

else

{

    $list[] = $item;

}

}

$field[??list??] = $list; // ????? list ?б????? field ??

$field[??pointer??] = 0; // ?????????б?????

$fields[$fieldName] = $field; // д?????? fields ???顣

}

??????????????????

/* ??????????? */

for($i = 0; $i < $dataCount; $i ++)

{

foreach($fields as $fieldName => $field)

{

$pointer = $field[??pointer??];

/* ????????????????б??β????????????б????? */

if($pointer == count($field[??list??])) $pointer = 0;

echo $field[??prefix??]; // ???????

echo $field[??list??][$pointer]; // ?????????????????б??е?????

echo $field[??postfix??]; // ????????

$pointer ++;

$fields[$fieldName][??pointer??] = $pointer;

}

echo " ";

}

??????????????? 50 ?е????????????????????????????????????????????????????????????????????????????????????????

???????????????

???????????????

??? list ???????????????????????????????????????????????Σ??????С?????ɡ??????????????????????????? ini ????????壬????????????????

???磬?????? example.ini ???????????????????Σ????? yyyy ?? mm ?? dd ?????

?嵥????example.ini ????????????

[field5]

prefix=""

datatype="custom" " ?????????ε?????????? custom

datacfg="custom.ini" " ?????????ε????????? custom.ini

postfix=""

?嵥???custom.ini

[field5.1]

prefix=""

datatype="list?? range=[1980-1999]"

postfix=" ?? "

[field5.2]

prefix=""

datatype="list?? range=[1-12]"

postfix=" ?? "

[field5.3]

prefix=""

datatype="list?? range=[1-31]"

postfix=" ?? "

???????? php ?е??麯???????????????????????????????η?????????????????????????????????? ini ???????????????????????????Ρ????????????????????????????????????

??????б??????????

?б? range ???????????????????磺

1. ?????????????range=[1-100:2]??????? 1 ?? 100??????? 2 ??????

2. ????????????????range=[1-100:2]&format=0.2f?????????? format ?????? sprintf ?????????????

3. ??????????????????????????????????б??е?????????????????????? rand ?????????????????

?????????????????

????????????????????е??????????????????????????????????????????????????? insert sql ??????? xml ????????????Щ??????????????????鷳??????????Щ??????????

??????

PHP ???????????????(???????????? web ??????)????? PHP ????????д?????С?????????????????????????????????????????????????????????????λ??????????????????????????????????????????????????????嵽?????????????????????????????????????????????????????????????????????????Щ??????????????????????????????