2013-01-05 15 views
5

लोड हो रहा है नहीं है मैं एक HTML स्ट्रिंग कर्ल का उपयोग कर प्राप्त: जब मैं यह echostr_get_html एक मान्य एचटीएमएल स्ट्रिंग

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$html_string = curl_exec($ch); 

के रूप में मैं अपने पार्स की जरूरत के लिए आवश्यकता होती है मैं एक पूरी तरह से अच्छा एचटीएमएल देखते हैं। लेकिन, इस स्ट्रिंग को HTML DOM PARSER विधि str_get_html($html_string) पर भेजने का प्रयास करते समय, यह इसे अपलोड नहीं करेगा (विधि आमंत्रण से झूठा रिटर्न)।

मैंने फ़ाइल पर file_get_html फ़ाइल के साथ फ़ाइल खोलने और खोलने की कोशिश की, लेकिन वही बात होती है।

इसका कारण क्या हो सकता है? जैसा कि मैंने कहा, जब मैं इसे गूंजता हूं तो एचटीएमएल बिल्कुल ठीक दिखता है।

बहुत बहुत धन्यवाद।

कोड में ही:

$html = file_get_html("http://www.bgu.co.il/tremp.aspx"); 
$v = $html->find('input[id=__VIEWSTATE]'); 
$viewState = $v[0]->attr['value']; 
$e = $html->find('input=[id=__EVENTVALIDATION]'); 
$event = $e[0]->attr['value']; 

$html->clear(); 
unset($html); 

$body = " A_STRING_THAT_CONTAINS_SOME_DATA " 

$ch = curl_init("http://www.bgu.co.il/tremp.aspx"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$html_string = curl_exec($ch); 

$file_handle = fopen("file.txt", "w"); 
fwrite($file_handle, $html_string); 
fclose($file_handle); 

curl_close($ch); 

$html = str_get_html($html_string); 
+0

यदि आप अपना कोड पोस्ट करते हैं तो हम शायद मदद कर सकते हैं। –

+0

यह मेरे लिए ठीक काम करता है। – pguardiario

उत्तर

1

आप जाँच लें कि एचटीएमएल किसी भी तरह एक तरह से एचटीएमएल डोम पार्सर उम्मीद नहीं है में इनकोडिंग था? जैसे <html> के बजाय &lt;html&gt; जैसे HTML इकाइयों के साथ - यह अभी भी आपके ब्राउज़र में सही HTML के रूप में प्रदर्शित होगा लेकिन पार्स नहीं होगा।

+0

मैंने स्ट्रिंग को फ़ाइल में सहेजा और नोटपैड के साथ देखा। टैग (और संपूर्ण एचटीएमएल) पूरी तरह से मान्य दिखता है। – Dani

0

मुझे लगता है कि आप POST पैरामीटर के कारण URL के साथ file_get_html का उपयोग करने के बजाय curl + str_get_html का उपयोग कर रहे हैं।

आप लौटाए गए HTML को सत्यापित करने के लिए इस डब्ल्यू 3 सी वैधकर्ता (http://validator.w3.org/#validate_by_input+with_options) का उपयोग कर सकते हैं, फिर, एक बार जब आप सुनिश्चित हो जाएं कि परिणाम 100% मान्य HTML कोड है तो आप यहां एक बग की रिपोर्ट कर सकते हैं: http://sourceforge.net/p/simplehtmldom/bugs/

+0

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

+0

अच्छा, इसका मतलब है कि जिस पृष्ठ को आप पार्स करने का प्रयास कर रहे हैं वह वैध HTML नहीं है, बीटीडब्ल्यू त्रुटियां क्या हैं? वैसे भी आप PHP एचटीएमएल डोम पार्सर प्रोजेक्ट में एक बग की रिपोर्ट करने का प्रयास कर सकते हैं, लेकिन यदि एचटीएमएल कोड आप पार्स करने की कोशिश कर रहे हैं तो वास्तव में मान्य HTML नहीं है, मुझे यकीन नहीं है कि आपको यह तय होगा या नहीं। – FerCa

21

आप कर्ल लिंक में कई तत्व (बड़ी फ़ाइल) हैं।

और मैं आपके लिंक के रूप में एक स्ट्रिंग (फ़ाइल) को पार्स कर रहा हूं और इस समस्या का सामना कर रहा हूं।

स्रोत कोड देखने के बाद, मुझे समस्या मिली। इससे मेरा काम बनता है !


मैंने पाया कि simple_html_dom.php आकार आप पढ़ सकते हैं सीमित कर दिया है।

// get html dom from string 
    function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_B  R_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT) 
    { 
      $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText); 
      if (empty($str) || strlen($str) > MAX_FILE_SIZE) 
      { 
        $dom->clear(); 
        return false; 
      } 
      $dom->load($str, $lowercase, $stripRN); 
      return $dom; 
    } 

तो आपको नीचे डिफ़ॉल्ट आकार (यह simple_html_dom.php के शीर्ष पर है)
शायद 100000000 करने के लिए बदल बदलने के लिए? यह आप पर निर्भर करता है।

define('MAX_FILE_SIZE', 6000000);
+0

इसके लिए धन्यवाद, यहां सबसे अच्छा जवाब। यह मेरे दस्तावेज़ को असफल होने का कारण बन रहा था। –

+0

इच्छा है कि मैंने इसे लगभग 4 घंटे पहले डिबगिंग देखा होगा! धन्यवाद। – user2029890

+2

आप दोस्त रॉक! धन्यवाद। – Ankit

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