Bir zipfile içine unpacking için geçici dir yapma

2 Cevap php

Sana uyan PDF + TextFiles bir sayı içeren bir zipfile kontrol ediyor, bir komut dosyası var. Ben açmak ya da bir şekilde zipfile gelen TextFiles okumak ve sadece dosya sürümü doğru olduğunu görmek için textfile bazı bilgileri almak istiyorum.

Ben bir tempdir yapmak için bir eşdeğer bulmak için tempnam işlevi bakıyordu, ama belki birisi soruna daha iyi bir çözüm vardır.

The indexfile looks something like this. -> is for TAB char. I have made the function to extract the version from the textfile and to check if its correct already, its only the unpacking, tmpdir or some other solution im looking for.

1000->filename->file version->program version->customer no->company no->distribution
2000->pagenumber->more info->more info-> and so on....

2 Cevap

oldukça kolaydır (Ben PHP kılavuzda ;) kısmen o aldı):

<?php

function tempdir($dir=false,$prefix='php') {
    $tempfile=tempnam(sys_get_temp_dir(),'');
    if (file_exists($tempfile)) { unlink($tempfile); }
    mkdir($tempfile);
    if (is_dir($tempfile)) { return $tempfile; }
}

/*example*/

echo tempdir();
// returns: /tmp/8e9MLi

Bkz: http://de.php.net/manual/en/function.tempnam.php

Remember, that in a linux system a file and a directory are theoretically the same thing. Watch out on a windows system ;)

Başka bir seçenek mktemp ve exec fonksiyonuna erişimi ile linux üzerinde çalışan ise şudur:

<?php

function tempdir($dir=NULL,$prefix=NULL) {
  $template = "{$prefix}XXXXXX";
  if (($dir) && (is_dir($dir))) { $tmpdir = "--tmpdir=$dir"; }
  else { $tmpdir = '--tmpdir=' . sys_get_temp_dir(); }
  return exec("mktemp -d $tmpdir $template");
}

/*example*/

$dir = tempdir();
echo "$dir\n";
rmdir($dir);

$dir = tempdir('/tmp/foo', 'bar');
echo "$dir\n";
rmdir($dir);

// returns:
//   /tmp/BN4Wcd
//   /tmp/foo/baruLWFsN (if /tmp/foo exists, /tmp/baruLWFsN otherwise)

?>

Bu potansiyeli önler rağmen (olası) üstünde ve tempnam işlev olarak aynı davranışı ırk sorunu.