hoepfa
27-01-2009, 08:38
Hallo zusammen,
vertrauensvoll wende ich mich als php-Neuling mit Programmierkenntnissen an euch, da ich mir ein seltsames Verhalten nicht erklären kann und die SuFu bzw goole nix gebracht hat.
Hintergrund:
- Info aus einer Datei (Telefonnummern, einmal unterhalb [start_cmd] einmal unterhalb [app_cmp]) lesen und in eine andere schreiben
Problem:
- ECHO gibt alles aus was ich brauche
- fputs schreibt aber nicht das gleiche
$dateiname_cmd = $cmdpfad.".cmd";
$dateiname_ini = $imppfad.".ini";
if ( !file_exists($dateiname_ini) )
{
// error handling
}
$fp = fopen($dateiname_ini, "r");
// detecting [start_cmd]
$written = 0;
$i = 0;
do
{
$line = fgets($fp,1024);
if ($i == 10)
{
break;
}
$i++;
} while (!eregi("^start_cmd", substr($line,1,9)));
// needed: 1st line below, containing phonenumbers
$i = 0;
do
{
$line = fgets($fp,1024);
if (eregi("[0-9]",substr($line,0,1)))
{
$line_cmd[$i] = $line;
//ECHO nl2br ( $line );
//ECHO nl2br ( $line_cmd[$i] );
$written++;
break;
}
if ($i == 1)
{
break;
}
$i++;
} while (eregi("[0-9]", substr($line,0,1)) OR eregi("^;", substr($line,0,1)));
// detecting [app_cmd]
$i = 0;
do
{
$line = fgets($fp,1024);
if ($i == 200) break;
$i++;
} while (!eregi("^app_cmd", substr($line,1,9)));
// needed: Line1, Line2, Line3 containing delivery status settings
$i = 1;
do
{
$line = fgets($fp,1024);
if ( stripos ( $line, "= %1,%2,%3" ) )
{
$replace = $SimRufNr.",".$DeviceID_serial.",".$DeviceID_HW;
$line_cmd[$i] = str_replace ( "%1,%2,%3", $replace, substr ( $line, 7 ) );
$written++;
//ECHO nl2br ( $line );
//ECHO nl2br ( $line_cmd[$i] );
}
if ($i == 10) break;
$i++;
} while ( 1 );
fclose ( $fp );
// writting to cmd-file
$fp = fopen ( $dateiname_cmd, "w" );
if ( $fp != FALSE )
{
for ( $i=0; $i<20;$i++)
{
//ECHO ( $line_cmd[$i] );
fputs ( $fp, $line_cmd[$i], strlen ( $line_cmd[$i] ) );
}
}
else
{
// error handling
}
Bin leider ein bisschen ratlos. In der Datei steht eine zusätzliche Zeile (insgesamt sollten 4 Telefonnummern drinstehen) welche nirgends vorkommt, sowie einige whitespaces die auch nirgends vorkommen.
Bin ich auf dem richtigen weg oder is das komplett daneben?
hoepfa
vertrauensvoll wende ich mich als php-Neuling mit Programmierkenntnissen an euch, da ich mir ein seltsames Verhalten nicht erklären kann und die SuFu bzw goole nix gebracht hat.
Hintergrund:
- Info aus einer Datei (Telefonnummern, einmal unterhalb [start_cmd] einmal unterhalb [app_cmp]) lesen und in eine andere schreiben
Problem:
- ECHO gibt alles aus was ich brauche
- fputs schreibt aber nicht das gleiche
$dateiname_cmd = $cmdpfad.".cmd";
$dateiname_ini = $imppfad.".ini";
if ( !file_exists($dateiname_ini) )
{
// error handling
}
$fp = fopen($dateiname_ini, "r");
// detecting [start_cmd]
$written = 0;
$i = 0;
do
{
$line = fgets($fp,1024);
if ($i == 10)
{
break;
}
$i++;
} while (!eregi("^start_cmd", substr($line,1,9)));
// needed: 1st line below, containing phonenumbers
$i = 0;
do
{
$line = fgets($fp,1024);
if (eregi("[0-9]",substr($line,0,1)))
{
$line_cmd[$i] = $line;
//ECHO nl2br ( $line );
//ECHO nl2br ( $line_cmd[$i] );
$written++;
break;
}
if ($i == 1)
{
break;
}
$i++;
} while (eregi("[0-9]", substr($line,0,1)) OR eregi("^;", substr($line,0,1)));
// detecting [app_cmd]
$i = 0;
do
{
$line = fgets($fp,1024);
if ($i == 200) break;
$i++;
} while (!eregi("^app_cmd", substr($line,1,9)));
// needed: Line1, Line2, Line3 containing delivery status settings
$i = 1;
do
{
$line = fgets($fp,1024);
if ( stripos ( $line, "= %1,%2,%3" ) )
{
$replace = $SimRufNr.",".$DeviceID_serial.",".$DeviceID_HW;
$line_cmd[$i] = str_replace ( "%1,%2,%3", $replace, substr ( $line, 7 ) );
$written++;
//ECHO nl2br ( $line );
//ECHO nl2br ( $line_cmd[$i] );
}
if ($i == 10) break;
$i++;
} while ( 1 );
fclose ( $fp );
// writting to cmd-file
$fp = fopen ( $dateiname_cmd, "w" );
if ( $fp != FALSE )
{
for ( $i=0; $i<20;$i++)
{
//ECHO ( $line_cmd[$i] );
fputs ( $fp, $line_cmd[$i], strlen ( $line_cmd[$i] ) );
}
}
else
{
// error handling
}
Bin leider ein bisschen ratlos. In der Datei steht eine zusätzliche Zeile (insgesamt sollten 4 Telefonnummern drinstehen) welche nirgends vorkommt, sowie einige whitespaces die auch nirgends vorkommen.
Bin ich auf dem richtigen weg oder is das komplett daneben?
hoepfa