2010-09-23 7 views
35

कोई भी दृष्टिकोण वर्तमान पृष्ठ को सर्वर पर HTML फ़ाइल के रूप में सहेजने का सुझाव दे सकता है? इस मामले में, यह भी ध्यान रखें कि सुरक्षा कोई समस्या नहीं है।वर्तमान पृष्ठ को एचटीएमएल के रूप में सर्वर पर सहेजें

मैंने इसके लिए चारों ओर खोज करने के अंतहीन घंटे बिताए हैं, और एक भी चीज़ नहीं मिली है।

आपकी मदद की बहुत सराहना की है, धन्यवाद!

संपादित

आप सभी आपकी मदद के लिए धन्यवाद, यह बहुत सराहना की गई।

+1

आप एक ही प्रश्न पूछा सिर्फ 14 घंटे पहले [स्व की बचत स्रोत (PHP)] - क्यों तुम वहाँ एक जवाब पाने के लिए के बजाय इसे फिर से पोस्ट करने की कोशिश क्यों नहीं करते? (http: // stackoverflow।कॉम/प्रश्न/3769504/सेविंग-सोर्स-ऑफ-सेल्फ-पीएचपी) – oezi

+1

ओज़ी - ठीक है, ऐसा लगता है कि मैं यह नया प्रश्न बनाने के बारे में सही था। मुझे सही जवाब मिला ... नया सवाल, अलग-अलग लोग, अलग-अलग जवाब। आप आगे बढ़ सकते हैं और अब इस सवाल को बंद कर सकते हैं। –

+0

ये प्रश्न बिल्कुल वही नहीं हैं। वे बहुत समान हैं लेकिन लक्ष्य में भिन्न हैं: यहां यह सर्वर है, दूसरे प्रश्न में यह ब्राउज़र ही है। – nalply

उत्तर

59

यदि आप फ़ाइल में किसी पृष्ठ के आउटपुट को सहेजना चाहते हैं, तो आप ऐसा करने के लिए बफरिंग का उपयोग कर सकते हैं। आपको जिस फ़ंक्शन का उपयोग करने की आवश्यकता है वह ob_start और ob_get_contents है।

<?php 
// Start the buffering // 
ob_start(); 
?> 
Your page content bla bla bla bla ... 

<?php 
echo '1'; 

// Get the content that is in the buffer and put it in your file // 
file_put_contents('yourpage.html', ob_get_contents()); 
?> 

इस फ़ाइल yourpage.html में पृष्ठ की सामग्री बचत होगी।

+2

आपको बहुत बहुत धन्यवाद। तुमने अभी मेरी जिंदगी बचाई – asdfkjasdfjk

+0

मुझे भी वही प्रश्न था। जवाब के लिए धन्यवाद। * लेकिन * यह 'yourpage.html' कहाँ से सहेजा जा रहा है? मुझे अपनी निर्देशिका फ़ोल्डर में फ़ाइल नहीं मिली – AlwaysANovice

+2

@ वालहह जब तक 'chdir' नहीं कहा जाता है, यह अनुरोधित स्क्रिप्ट के उसी फ़ोल्डर में होना चाहिए। यदि आप अनिश्चित हैं कि यह क्या है, तो आप 'getcwd' पर कॉल कर सकते हैं। – HoLyVieR

3

छिपे हुए इनपुट मान के रूप में या सर्वर पक्ष में AJAX द्वारा document.getElementsByTagName('html')[0].innerHTML भेजने के लिए जावास्क्रिप्ट का उपयोग करें। यह आउटपुट बफरिंग से अधिक उपयोगी है अगर सामग्री को जावास्क्रिप्ट द्वारा बाद में ट्रैवर्स/संशोधित किया गया है, जो सर्वर पक्ष के बारे में कोई धारणा नहीं हो सकती है।

+0

धन्यवाद, बलुससी। तो अगर मैं var $ s = document.getElements ... (php में) का उपयोग करता हूं तो मैं सर्वर पर एक फ़ाइल में पूरी var लिख सकता हूं? –

+0

जावास्क्रिप्ट वेब ब्राउजर पर चलता है, वेबसर्वर पर नहीं। क्या आप जेएस जानते हैं? वैसे भी, आपकी टिप्पणी दी गई है, मुझे लगता है कि यह उत्तर आपको जो चाहिए वह सब कुछ नहीं है :) आप शायद तत्काल PHP- जेनरेट किए गए HTML पृष्ठ को सहेजना चाहते हैं, न कि वर्तमान में खोला गया HTML पृष्ठ (इसके सभी मौजूदा क्लाइंट साइड स्टेटस में)। होलीवियर के जवाब की जांच करें। – BalusC

+0

धन्यवाद बालससी :) –

9

मुझे लगता है कि हम PHP के Output Control Functions का उपयोग कर सकते हैं, तो आप सामग्री को पहले चर में सहेज सकते हैं और फिर उन्हें नई फ़ाइल में सहेज सकते हैं, अगली बार, आप इसे HTML फ़ाइल मौजूद कर सकते हैं, फिर उसे फिर से प्रस्तुत करें, पेज उत्पन्न करें।

<?php 
$cacheFile = 'cache.html'; 

if ((file_exists($cacheFile)) && ((fileatime($cacheFile) + 600) > time())) 
{ 
    $content = file_get_contents($cacheFile); 
    echo $content; 
} else 
{ 
    ob_start(); 
    // write content 
    echo '<h1>Hello world to cache</h1>'; 
    $content = ob_get_contents(); 
    ob_end_clean(); 
    file_put_contents($cacheFile,$content); 
    echo $content; 
} 
?> 

उदाहरण से लिया: http://www.php.net/manual/en/function.ob-start.php#88212

+0

धन्यवाद चेतन :) –

+0

आपका स्वागत है .. –

1

मैं तुम्हें कर्ल की जरूरत है, ताकि आप किसी भी पृष्ठ 'उत्पादन को बचा सकता है लग रहा है। वापसी ट्रांसफर के साथ कर्ल का प्रयोग करें। और जो कुछ भी आप आउटपुट के साथ करना चाहते हैं।

+0

धन्यवाद, सत्य। :) –

3

मामले आप एक HTML फ़ाइल में सीएसएस, छवियों और स्क्रिप्ट के साथ पूरा html पृष्ठ को बचाने के लिए, तो आप इस वर्ग मैं लिखा है उपयोग कर सकते हैं देख रहे हैं:

इस वर्ग HTML पृष्ठों के साथ पूरा बचा सकता है छवियों, सीएसएस और जावास्क्रिप्ट।

यह किसी दिए गए पृष्ठ का यूआरएल लेता है और उसे दिए गए फ़ाइल में स्टोर करने के लिए पुनर्प्राप्त करता है।

वर्ग एचटीएमएल पार्स और निर्धारित जो छवियों, सीएसएस और जावास्क्रिप्ट यह की जरूरत है, तो उन फ़ाइलों को भी डाउनलोड कर रहे हैं और स्थानीय फ़ाइल को बचाया HTML पृष्ठ के अंदर सहेजी गई फ़ाइलों कर सकते हैं।

वैकल्पिक रूप से यह जावास्क्रिप्ट कोड छोड़ सकता है, केवल पृष्ठ सामग्री पर रखें, और परिणामस्वरूप पेज को व्हाइटस्पेस को हटा दें।

http://www.phpclasses.org/package/8305-PHP-Save-HTML-pages-complete-with-images-CSS-and-JS.html

0
//function to use curl to get the content of the page. 
//parameter used url and $data for the posting credentials to retrieve information. 

function httpPost($url, $data){ 
    $curl = curl_init($url); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

    $response = curl_exec($curl); 
    curl_close($curl); 
    return $response; 
} 

// 
$filename="abc.html"; // whatever name you want. 
$myfile = fopen($filename, "w") or die("Unable to open file!"); 
$txt = httpPost(<url>, ""); //<url> replace by url you want. 
fwrite($myfile, $txt); 
fclose($myfile);