correct regex date pattern for dd/mm/yyyy

Viewed 1618

I need to update the same line, which is also including a date in dd/mm/yyyy format along with some string, in a group of files. I have checked answers here given to similar questions however couldn’t make any of the patterns suggested run in my code.

My current PHP code is:

<?php
// get the system date
$sysdate = date("d/m/Y");
// open the directory
$dir = opendir($argv[1]);
$files = array();
// sorts the files alphabetically
while (($file = readdir($dir)) !== false) {
    $files[] = $file;
}
closedir($dir);
sort($files);
// for each ordered file will run the in the clauses part
foreach ($files as $file) {
    $lines = '';
    //  filename extension is '.hql'
    if (strpos($file,".hql") != false || strpos($file,".HQL") != false)
    {
        $procfile = $argv[1] . '\\' . $file;      
        echo "Converting filename: " . $procfile . "\n";
        $handle = fopen($procfile, "r");
        $lines = fread($handle, filesize($procfile));
        fclose($handle);
        $string = $lines;
        // What are we going to change runs in here
        $pattern = '[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]';
        $replacement = $sysdate;
        $lines = preg_replace($pattern, $replacement, $string);
        echo $lines;
        $newhandle = fopen($procfile, 'w+');
        fwrite($newhandle, $lines);
        fclose($newhandle);
        // DONE
    }
}

closedir($dir);

?>

When I run this code on command prompt, it doesn’t give any error message and it seems to be running properly. But once it finishes and I check my files, I see that the content of each file is getting deleted and they all become 0 KB files with nothing in them.

6 Answers
Related