Jeśli znasz nazwę pliku wewnątrz .zip, tylko to zrobić:
<?php
$xml = file_get_contents('zip://./your-zip.zip#your-file.xml');
Jeśli masz zwykły sznurek, po prostu to zrobić:
<?php
$xml = file_get_contents('compress.zlib://data://text/plain;base64,'.$base64_encoded_string);
[edytuj] Dokumentacja jest dostępna: http://www.php.net/manual/en/wrappers.php
Z komentarzy: jeśli nie masz zakodowanego ciągu base64, musisz urkać je() przed użyciem opakowania data://
.
<?php
$xml = file_get_contents('compress.zlib://data://text/plain,'.urlencode($text));
[edit 2] Nawet jeśli już znalazł rozwiązanie z plikiem, istnieje rozwiązanie (do testu) nie widzę w swojej odpowiedzi:
<?php
$zip = new ZipArchive;
$zip->open('data::text/plain,'.urlencode($base64_decoded_string));
$zip2 = new ZipArchive;
$zip2->open('data::text/plain;base64,'.urlencode($base64_string));
Mam problem. Otwarcie zipem nie powiedzie się, mimo że wydaje się, że zapisał plik zip do pamięci. Próbowałem file_get_contents z php: // memory i jest string (0) ... – transilvlad
Tak, przepraszam - mój kod jest w tym przypadku błędny. Metody file_put_contents() nie działają na strumieniach i/o: https://bugs.php.net/bug.php?id=50886&edit=2. Tak więc musisz pracować z 'fopen()', 'fwrite()' i 'stream_get_contents()', aby napisać/przeczytać do 'php: // memory' – HenningCash
Podobno już się dowiedziałeś: To niemożliwe. Właśnie dodałem kilka powodów do odpowiedzi. Powodzenia w każdym razie! – HenningCash