/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
is_binary
Fra : Brian Schmidt


Dato : 24-02-04 23:02

Jeg leder efter en metode til at kontrollere om en fil er binær eller
plaintext.

Der findes ingen funktioner som jeg har kunnet finde der kan gøre dette.
mime_content_type() er desværre ikke tilgængelig ellers ville jeg have
brugt den.

Jeg har prøvet funktionen beskrevet på php.net,
http://dk2.php.net/manual/en/ref.filesystem.php#30152
<?php
function is_binary($str_file)
{
$str_tmp = '';
@$src_file = fopen($str_file, 'rb');
@$tmpStr = fread($src_file, 256);
@fclose($src_file);
if ($str_tmp != '') {
$str_tmp = str_replace(chr(10), '', $str_tmp);
$str_tmp = str_replace(chr(13), '', $str_tmp);
$int_tmp = 0;
for ($i = 0; $i < strlen($str_tmp); $i++) {
if (extension_loaded('ctype') && !ctype_print($str_tmp[$i])) {
$int_tmp++;
} elseif(!eregi("[[:print:]]+", $str_tmp[$i])) {
$int_tmp++;
}
}
if ($int_tmp > 5) {
return 0;
} else {
return 1;
}
} else {
return 0;
}
}
?>

men den ser ikke ud til at virke..

Jeg håber at nogen ved hvad der skal kigges efter i en fil for at
bestemme om den er binær eller ej, og kan hjælpe mig med at skrive en
funktion til formålet.

På forhånd tak.

Med venlig hilsen

Brian Schmidt

 
 
M. Sveegaard (25-02-2004)
Kommentar
Fra : M. Sveegaard


Dato : 25-02-04 00:25

Som jeg ser det er der bare byttet rundt på sandt og falsk. Prøv:

function is_binary($link)
{
$tmpStr = '';
$fp = fopen($link, 'rb');
$tmpStr = fread($fp, 256);
fclose($fp);

if($tmpStr != '')
{
$tmpStr = str_replace(chr(10), '', $tmpStr);
$tmpStr = str_replace(chr(13), '', $tmpStr);

$tmpInt = 0;

for($i =0; $i < strlen($tmpStr); $i++)
{
if( extension_loaded('ctype') )
{
if( !ctype_print($tmpStr[$i]) )
$tmpInt++;
}
else
{
if( !eregi("[[:print:]]+", $tmpStr[$i]) )
$tmpInt++;
}
}
if($tmpInt > 5)
return true;
else
return false;
}
else
return(0);
}

--
mvh m.sveegaard

Brian Schmidt wrote:
> Jeg leder efter en metode til at kontrollere om en fil er binær eller
> plaintext.
>
> Der findes ingen funktioner som jeg har kunnet finde der kan gøre dette.
> mime_content_type() er desværre ikke tilgængelig ellers ville jeg have
> brugt den.
>
> Jeg har prøvet funktionen beskrevet på php.net,
> http://dk2.php.net/manual/en/ref.filesystem.php#30152
> <?php
> function is_binary($str_file)
> {
> $str_tmp = '';
> @$src_file = fopen($str_file, 'rb');
> @$tmpStr = fread($src_file, 256);
> @fclose($src_file);
> if ($str_tmp != '') {
> $str_tmp = str_replace(chr(10), '', $str_tmp);
> $str_tmp = str_replace(chr(13), '', $str_tmp);
> $int_tmp = 0;
> for ($i = 0; $i < strlen($str_tmp); $i++) {
> if (extension_loaded('ctype') && !ctype_print($str_tmp[$i])) {
> $int_tmp++;
> } elseif(!eregi("[[:print:]]+", $str_tmp[$i])) {
> $int_tmp++;
> }
> }
> if ($int_tmp > 5) {
> return 0;
> } else {
> return 1;
> }
> } else {
> return 0;
> }
> }
> ?>
>
> men den ser ikke ud til at virke..
>
> Jeg håber at nogen ved hvad der skal kigges efter i en fil for at
> bestemme om den er binær eller ej, og kan hjælpe mig med at skrive en
> funktion til formålet.
>
> På forhånd tak.
>
> Med venlig hilsen
>
> Brian Schmidt


Brian Schmidt (25-02-2004)
Kommentar
Fra : Brian Schmidt


Dato : 25-02-04 02:47

Mange tak, det så ud til at virke :)

M. Sveegaard wrote:

> Som jeg ser det er der bare byttet rundt på sandt og falsk. Prøv:
>
> function is_binary($link)
> {
> $tmpStr = '';
> $fp = fopen($link, 'rb');
> $tmpStr = fread($fp, 256);
> fclose($fp);
>
> if($tmpStr != '')
> {
> $tmpStr = str_replace(chr(10), '', $tmpStr);
> $tmpStr = str_replace(chr(13), '', $tmpStr);
>
> $tmpInt = 0;
>
> for($i =0; $i < strlen($tmpStr); $i++)
> {
> if( extension_loaded('ctype') )
> {
> if( !ctype_print($tmpStr[$i]) )
> $tmpInt++;
> }
> else
> {
> if( !eregi("[[:print:]]+", $tmpStr[$i]) )
> $tmpInt++;
> }
> }
> if($tmpInt > 5)
> return true;
> else
> return false;
> }
> else
> return(0);
> }
>
> --
> mvh m.sveegaard
>
> Brian Schmidt wrote:
>
>> Jeg leder efter en metode til at kontrollere om en fil er binær eller
>> plaintext.
>>
>> Der findes ingen funktioner som jeg har kunnet finde der kan gøre dette.
>> mime_content_type() er desværre ikke tilgængelig ellers ville jeg have
>> brugt den.
>>
>> Jeg har prøvet funktionen beskrevet på php.net,
>> http://dk2.php.net/manual/en/ref.filesystem.php#30152
>> <?php
>> function is_binary($str_file)
>> {
>> $str_tmp = '';
>> @$src_file = fopen($str_file, 'rb');
>> @$tmpStr = fread($src_file, 256);
>> @fclose($src_file);
>> if ($str_tmp != '') {
>> $str_tmp = str_replace(chr(10), '', $str_tmp);
>> $str_tmp = str_replace(chr(13), '', $str_tmp);
>> $int_tmp = 0;
>> for ($i = 0; $i < strlen($str_tmp); $i++) {
>> if (extension_loaded('ctype') &&
>> !ctype_print($str_tmp[$i])) {
>> $int_tmp++;
>> } elseif(!eregi("[[:print:]]+", $str_tmp[$i])) {
>> $int_tmp++;
>> }
>> }
>> if ($int_tmp > 5) {
>> return 0;
>> } else {
>> return 1;
>> }
>> } else {
>> return 0;
>> }
>> }
>> ?>
>>
>> men den ser ikke ud til at virke..
>>
>> Jeg håber at nogen ved hvad der skal kigges efter i en fil for at
>> bestemme om den er binær eller ej, og kan hjælpe mig med at skrive en
>> funktion til formålet.
>>
>> På forhånd tak.
>>
>> Med venlig hilsen
>>
>> Brian Schmidt
>
>

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408934
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste