2012-07-14 26 views
8

मैं भयानक है कि एक HTML फ़ाइल पार्स करने का प्रयास कर रहा हूँ का उपयोग करते समय (मुझे विश्वास है, यह है) HTML संरचना और इस और ज्ञान की मेरी कमी की वजह से, मैं अपने ही लिख नहीं सका पार्सर। बाद में मैंने सरल HTML डोम पार्सर का उपयोग करने की कोशिश की, क्योंकि बहुत से लोग (एसओ पर भी) इसकी अनुशंसा करते हैं।सरल HTML डोम - गंभीर त्रुटि load_file

मैं simple_html_dom.php आवश्यक है, तो वस्तु बनाया। वे काम करते प्रतीत होते हैं, आवश्यकता() फ़ंक्शन रिटर्न "1" और var_dump() - ऑब्जेक्ट को ऑब्जेक्ट देता है।

इस के बाद मैं URL को लोड करने के रूप में यह पुस्तिका में किया गया था की कोशिश की, लेकिन मैं एक गंभीर त्रुटि है, कोई बात नहीं क्या यूआरएल मैंने कोशिश की। निम्न त्रुटि थी:

Fatal error: Call to undefined function mb_detect_encoding() in 
      /home/fema/web/subdomain/devel/www_root/parser/ 
      simplehtmldom_1_5/simple_html_dom.php on line 988 

मैं जाँच की क्या लाइन 988 पर है और यह निम्नलिखित है:

// Have php try to detect the encoding from the text given to us. 
     $charset = mb_detect_encoding($this->root->plaintext . "ascii", 
        $encoding_list = array("UTF-8", "CP1252")); 

मैं समझता हूँ कि यह वर्ण एन्कोडिंग के बारे में है, लेकिन इतना ही है। मुझे इसके बारे में कुछ भी नहीं मिला है न तो Google या SO पर।

मेरा पूरा कोड (प्लेसहोल्डर यूआरएल) है:

<?php 

require('simplehtmldom_1_5/simple_html_dom.php'); 

// Create a DOM object 
$dom = new simple_html_dom(); 

$dom->load_file('http://www.google.com/'); 

?> 

किसी को भी मुझे बता सकते क्या करना है? या किसी तरह की सलाह जब ऐसा कुछ होता है।

अग्रिम धन्यवाद।

उत्तर

9

PHP के आपके निर्माण में मल्टीबाइट स्ट्रिंग एक्सटेंशन गुम है। यह वास्तव में मामला होने के लिए काफी असामान्य है, जब तक कि आप वास्तव में PHP का एक पुराना निर्माण या असामान्य संकलन विकल्पों के साथ संकलित नहीं कर रहे हैं, जबकि मल्टीबाइट एक्सटेंशन डिफ़ॉल्ट रूप से सक्षम नहीं है, इसे आमतौर पर माना जाता है आवश्यक एक्सटेंशन जो हर PHP बिल्ड में इन दिनों कम या कम है।

आप मैं दृढ़ता से अपग्रेड करने की अनुशंसा करता हूँ, यदि आप एक काफी हाल ही में निर्माण किया है, phpinfo() है कि आप multibyte स्थापित किया है के साथ जांच पीएचपी के एक पुराने संस्करण चला रहे हैं। यदि आप नहीं करते हैं, तो आपको स्रोत से PHP को पुनर्स्थापित या पुनर्निर्माण करने की आवश्यकता हो सकती है।

इसके इंस्टॉल हो, तो --enable-mbstring संकलन विकल्पों की सूची में होना चाहिए। अधिक जानकारी के लिए, multibyte एक्सटेंशन, विशेष रूप से chapter on installation पर PHP मैन्युअल देखें।

+0

आपके उत्तर के लिए धन्यवाद, यह PHP 5.3 है, लेकिन मैं अपने दोस्त से पूछूंगा। (मैं उसका सर्वर उपयोग कर रहा हूं।) –

+0

ऐसा लगता है कि आप सही थे, लेकिन एक नया PHP संकलित करने के लिए पर्याप्त रैम नहीं है, वह कहते हैं। आपके उत्तर के लिए धन्यवाद। –

+0

ग्रेट ग्रेट उत्तर .. –

6

मैं अमेज़न EC2 & एक मानक PHP के स्थापित का उपयोग कर एक ही मुद्दा था। मैंने किया था निम्नलिखित (http://php.net/manual/en/mbstring.installation.php पर होता है) जो समस्या हल:

 
yum install php-mbstring 
httpd -k restart 
0

आगे पीछे चल स्लैश (/) निकालें अपने URL विधि load_file() में प्रदान की स्ट्रिंग में है और यह काम करता है।
जाहिर है, सरल HTML DOM लाइब्रेरी की load_file() विधि में एक URL स्ट्रिंग के अंत में आगे बढ़ने के साथ एक समस्या है।