将 01 Januari 从字符串更改为 1 月
change 01 Januari to january from string
我试过这个并在字符串 2017 上取得了成功,但是 2018 年有 2 个月是这样的..编辑我的正则表达式的哪一部分使字符串 2018 刚好得到一月。重点是使字符串 2018 与 2017 相同。
如何将 1 月 1 日更改为 1 月
2018 年字符串
File=D:\Shared\print18 Januari\sembilan\BIRU TUA NO 1-
70_100X200CM-1.tif
来自 TXT 文件的字符串 2017
File=D:\Shared\print17\september\printing\baryun - cetak
transferpaper.tif
从 TXT 获取数据的代码
foreach (glob("C://xampp/htdocs/Champion/machine-logs/LogCampusMesinMutoh/*.job")as $job) {
$path = file_get_contents($job);
$File = '/File=(.*)/';
$PrintSetup = '/PrintSetup=(.*)/';
$SourceSizeX = '/SourceSizeX=(.*)/';
$SourceSizeY = '/SourceSizeY=(.*)/';
$Filelg = '/File=(.*)/';
preg_match($File,$path,$Filematch);
preg_match($PrintSetup,$path,$PrintSetupmatch);
preg_match($SourceSizeX, $path,$SourceSizeXmatch);
preg_match($SourceSizeY, $path,$SourceSizeYmatch);
preg_match($Filelg,$path, $Filelgmatch);
$kol = $Filelgmatch[1];
$r = "/^D:\\[a-zA-Z]+\\[a-z]+\\([0-9]{4})\\([a-z]+)\\([0-9]{1,2})/";
if (preg_match($r,$kol,$match)){
$date = $match[3]."-".$match[2]."-".$match[1];
$xtime = strtotime($date);
$time = date("Y-m-d",$xtime);
}
$dimensi = $SourceSizeXmatch[1]." x ".$SourceSizeYmatch[1];
$query = "INSERT into CMP.log_file (PRN_DESC,FIL_NM,PRN_DIM,BEG_TS,END_TS) VALUES ('".$PrintSetupmatch[1]."','".$Filematch[1]."','".$dimensi."','".$time."','".$time."')";
$result = mysql_query($query);
}
结果日期
BEG_TS END_TS
2017-09-26 00:00:00 2017-09-26 00:00:00
此解决方案使用 explode()
解析字符串,使用 str_replace()
翻译月份,使用 preg_match
删除数字月份,最后使用 strtotime()
翻译人类日期, date()
:
$str = 'File=D:\Shared\print17\september\printing\baryun - cetak transferpaper.tif';
$str = 'File=D:\Shared\print18 Januari\sembilan\BIRU TUA NO 1-70_100X200CM-1.tif';
// remove the 'File='
$str = str_replace('File=', '', $str);
// parse subfolders
$folders = explode('\', $str);
var_dump($folders);
/*
array (size=8)
0 => string 'D:' (length=2)
1 => string 'Shared' (length=6)
2 => string 'print' (length=5)
3 => string '2018' (length=4)
4 => string '01 Januari' (length=10)
5 => string '09' (length=2)
6 => string 'sembilan' (length=8)
7 => string 'BIRU TUA NO 1-70_100X200CM-1.tif' (length=32)
*/
// translate months
$months = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
$maand= array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
$folders[4] = str_replace($maand, $months, strtolower($folders[4]));
// handle months with numeric values
if(preg_match('/(\d*)?(\w*)$/', $folders[4], $matches)){
$folders[4] = $matches[2];
}
//
var_dump($matches);
/*
array (size=3)
0 => string 'January' (length=7)
1 => string '' (length=0)
2 => string 'January' (length=7)
*/
// date string aka 'January 09 2018'
$date = "$folders[4] $folders[5] $folders[3]";
//
var_dump($date);
/*
'January 09 2018' (length=15)
*/
$xtime = strtotime($date);
$time = date("Y-m-d H:m:s", $xtime);
var_dump($time); // 2009-01-01
/*
'2018-01-09 00:01:00' (length=19)
*/
简答:
'/(\d*)?(\w*)$/'
查找没有前导数值的月份。
我试过这个并在字符串 2017 上取得了成功,但是 2018 年有 2 个月是这样的..编辑我的正则表达式的哪一部分使字符串 2018 刚好得到一月。重点是使字符串 2018 与 2017 相同。
如何将 1 月 1 日更改为 1 月
2018 年字符串
File=D:\Shared\print18 Januari\sembilan\BIRU TUA NO 1-
70_100X200CM-1.tif
来自 TXT 文件的字符串 2017
File=D:\Shared\print17\september\printing\baryun - cetak
transferpaper.tif
从 TXT 获取数据的代码
foreach (glob("C://xampp/htdocs/Champion/machine-logs/LogCampusMesinMutoh/*.job")as $job) {
$path = file_get_contents($job);
$File = '/File=(.*)/';
$PrintSetup = '/PrintSetup=(.*)/';
$SourceSizeX = '/SourceSizeX=(.*)/';
$SourceSizeY = '/SourceSizeY=(.*)/';
$Filelg = '/File=(.*)/';
preg_match($File,$path,$Filematch);
preg_match($PrintSetup,$path,$PrintSetupmatch);
preg_match($SourceSizeX, $path,$SourceSizeXmatch);
preg_match($SourceSizeY, $path,$SourceSizeYmatch);
preg_match($Filelg,$path, $Filelgmatch);
$kol = $Filelgmatch[1];
$r = "/^D:\\[a-zA-Z]+\\[a-z]+\\([0-9]{4})\\([a-z]+)\\([0-9]{1,2})/";
if (preg_match($r,$kol,$match)){
$date = $match[3]."-".$match[2]."-".$match[1];
$xtime = strtotime($date);
$time = date("Y-m-d",$xtime);
}
$dimensi = $SourceSizeXmatch[1]." x ".$SourceSizeYmatch[1];
$query = "INSERT into CMP.log_file (PRN_DESC,FIL_NM,PRN_DIM,BEG_TS,END_TS) VALUES ('".$PrintSetupmatch[1]."','".$Filematch[1]."','".$dimensi."','".$time."','".$time."')";
$result = mysql_query($query);
}
结果日期
BEG_TS END_TS
2017-09-26 00:00:00 2017-09-26 00:00:00
此解决方案使用 explode()
解析字符串,使用 str_replace()
翻译月份,使用 preg_match
删除数字月份,最后使用 strtotime()
翻译人类日期, date()
:
$str = 'File=D:\Shared\print17\september\printing\baryun - cetak transferpaper.tif';
$str = 'File=D:\Shared\print18 Januari\sembilan\BIRU TUA NO 1-70_100X200CM-1.tif';
// remove the 'File='
$str = str_replace('File=', '', $str);
// parse subfolders
$folders = explode('\', $str);
var_dump($folders);
/*
array (size=8)
0 => string 'D:' (length=2)
1 => string 'Shared' (length=6)
2 => string 'print' (length=5)
3 => string '2018' (length=4)
4 => string '01 Januari' (length=10)
5 => string '09' (length=2)
6 => string 'sembilan' (length=8)
7 => string 'BIRU TUA NO 1-70_100X200CM-1.tif' (length=32)
*/
// translate months
$months = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
$maand= array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
$folders[4] = str_replace($maand, $months, strtolower($folders[4]));
// handle months with numeric values
if(preg_match('/(\d*)?(\w*)$/', $folders[4], $matches)){
$folders[4] = $matches[2];
}
//
var_dump($matches);
/*
array (size=3)
0 => string 'January' (length=7)
1 => string '' (length=0)
2 => string 'January' (length=7)
*/
// date string aka 'January 09 2018'
$date = "$folders[4] $folders[5] $folders[3]";
//
var_dump($date);
/*
'January 09 2018' (length=15)
*/
$xtime = strtotime($date);
$time = date("Y-m-d H:m:s", $xtime);
var_dump($time); // 2009-01-01
/*
'2018-01-09 00:01:00' (length=19)
*/
简答:
'/(\d*)?(\w*)$/'
查找没有前导数值的月份。