Jazzy 1012
asked on
Alot of errors occurring with no warning issues, and echos out perfectly online.
<?php
error_reporting(E_ALL);
ini_set('display_errors' ,1);
$find = '.5010.';
$directory_with_files = './'.date('m-d-Y');
$dh = opendir($directory_with_files);
$files = array();
while (false !== ($filename = readdir($dh)))
{
if(in_array($filename, array('.', '..')) || is_dir($filename))
continue;
$files[] = $filename;
}
foreach($files as $file)
{
//find only 5010 files
if(stripos($file, $find) !== false)
{
// open the 5010 file
$handle = fopen(date('m-d-Y').'/'.$file, "r");
$file_content = file_get_contents(date('m-d-Y').'/'.$file);
$handle2 = fopen(date('m-d-Y').'/'.$file, "r");
$file_content2 = file_get_contents(date('m-d-Y').'/'.$file);
if ($handle) {
$header = '';
$name = '';
$footer = '';
$payor_blocks = array();
// determine if file has more than one payor
$payor_count = substr_count($file_content, 'N1');
//if the file has more than one payor
if($payor_count > 1) {
//read the file line by line
$header_end = false;
$block_start = false;
$count = 1;
if($handle2){
$line_number = 0;
$line_stop= array();
while (($line1 = fgets($handle2)) !== false) {
$line_number++;
if(strpos($line1, 'CAS') !==false){
$line_stop[] = $line_number;
}
}
$footer_line = count($line_stop)-2;
$footer_line = $line_stop[$footer_line];
$line_number = 0; }
//look for occurances of CAS and what line each on is on
while (($line = fgets($handle)) !== false) {
$line_number++;
//look for the first payor block
if(strpos($line, 'N1') !== false || $block_start) {
$header_end = true; $block_start = true;
if(strpos($line, 'N1') !== false) {
$count++;
}
//see if the block finished
if($line_number == $footer_line) {
$block_start = false;
$payor_blocks[$count] .= $line;
$count++;
}
$payor_blocks[$count] .= $line;
} else {
//append to the header
if($header_end) {
$footer .= $line."\n";
} else {
$header .= $line."\n";
}
}
}
//get payor blocks and create a file foreach payor
$new_files = array();
foreach($payor_blocks as $block) {
$filename = date('m-d-Y').'/'.$file . "_" . $count;
$count++;
$new_files[] = array(
'name' => $filename,
'content' => $header."\n".$block."\n".$footer
);
}
//loop through new files and create them
foreach($new_files as $new_file) {
//create file
$myfile = fopen($new_file['name'], "w");
//put contents in the file
fwrite($myfile, $new_file['content']);
//close the file
fclose($myfile);
}
$output = 'combined.txt';
foreach ($myfile as $my_file) {
fwrite($output,file_get_contents($my_file));
}
echo "<pre>" . print_r($new_files, true) . "</pre>";
} else {
// DO what u were doing in script #1
while (($line = fgets($handle)) !== false)
{
$refid = 'REF';
if(stripos($line, $refid) !== false)
{
$refnumber = str_replace(array($refid, '~'), array('', ''), $line);
$refnumber = trim($refnumber);
if($refnumber != '')
{
$refnumber = '_'.$refnumber.'_';
$filerenamed = str_replace($find, $refnumber,date('m-d-Y').'/'. $file);
copy(date('m-d-Y').'/'.$file, $directory_with_files.'/'.$filerenamed);
}
echo $refnumber . "\n";
}
}
}
I have this code above, in the beginning it is suppose to find files in a folder with todays date that in the filename it contains "5010", then check if the file has more than one "N1" to split it and create new files each containing there own "N1", with just an _count++ to the file name, after all that is done, it goes through a series were it looks for the "REF" and replaces the 5010 with the characters after "REF" for example if REF is REF*SMI8~ the file name would replace ".5010." with "_SMI8_" And also copy all the files that dont contain "5010" in one .txt document called combined,
But my REF code doesnt work anymore since I made the folder and the place to replace them today's date and my combine does not work as well. Can anyone please help?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.