2010-11-03 11 views
11

में मेरे पास मेरे सर्वर पर एक ज़िप फ़ाइल है। मैं एक PHP फ़ाइल, loadZIP.php बनाना चाहता हूं जो एक पैरामीटर स्वीकार करेगा, और उसके बाद उस पैरामीटर को प्रतिबिंबित करने के लिए ज़िप के भीतर एक टेक्स्ट फ़ाइल को संशोधित करेगा।एक ज़िप फ़ाइल में एक एकल फ़ाइल फ़ाइल को संशोधित करना, PHP

तो, loadZIP.php?param=blue तक पहुंचने से, ज़िप फ़ाइल खुल जाएगी, और कुछ पाठ को टेक्स्ट फ़ाइल में बदल दिया जाएगा जिसे मैं 'नीली' के साथ निर्दिष्ट करता हूं, और उपयोगकर्ता को इस संपादित ज़िप फ़ाइल को डाउनलोड करने की अनुमति देता है।

मैंने सभी PHP ज़िप कार्यों को देखा है, लेकिन मुझे एक साधारण समाधान नहीं मिल रहा है। यह अपेक्षाकृत आसान समस्या की तरह लगता है, और मुझे विश्वास है कि मैं इसे सोच रहा हूं। इससे पहले कि मैं कुछ जटिल जटिल कार्यों को लिखूं और लिखूं, मैं सोच रहा था कि आप इसके बारे में कैसे जाएंगे।

उत्तर

20

क्या आपने PHP5 के ZipArchive फ़ंक्शंस पर एक नज़र डाली है?

असल में, आप ज़िप को खोलने के लिए ZipArchive::Open() का उपयोग कर सकते हैं, फिर ZipArchive::getFromName() स्मृति में फ़ाइल को पढ़ने के लिए। फिर, इसे संशोधित, का उपयोग ZipArchive::deleteName() पुरानी फाइल को हटाने के लिए, ZipArchive::AddFromString() का उपयोग नई सामग्री वापस ज़िप करने के लिए लिखने के लिए, और ZipArchive::close():

$zip = new ZipArchive; 
$fileToModify = 'myfile.txt'; 
if ($zip->open('test1.zip') === TRUE) { 
    //Read contents into memory 
    $oldContents = $zip->getFromName($fileToModify); 
    //Modify contents: 
    $newContents = str_replace('key', $_GET['param'], $oldContents) 
    //Delete the old... 
    $zip->deleteName($fileToModify) 
    //Write the new... 
    $zip->addFromString($fileToModify, $newContents); 
    //And write back to the filesystem. 
    $zip->close(); 
    echo 'ok'; 
} else { 
    echo 'failed'; 
} 

नोट ZipArchive पीएचपी 5.2.0 में पेश किया गया था (लेकिन, ZipArchive भी है PECL package के रूप में उपलब्ध)।

संबंधित मुद्दे