2012-08-13 15 views
7

का उपयोग करते समय 'þ' पर विस्फोट करने में असमर्थ मुझे दूरस्थ फ़ाइल की सामग्री प्राप्त करने की आवश्यकता है, और फिर प्रतीक पर उन सामग्रियों को विस्फोट करें: "þ"।file_get_contents()

यदि मैं स्ट्रिंग जो विस्फोट कर रहा हूं, तो मैं इसे स्थानीय बना सकता हूं, लेकिन मैं इसे file_get_contents() के साथ काम नहीं कर सकता;

$string = '1þClassic Los 1/10þþ15þ1þTrueþ2þCú'; 
$parts = explode("þ", $string); 
var_dump($parts); 

परिणाम:

array(8) { 
    [0]=> 
    string(1) "1" 
    [1]=> 
    string(16) "Classic Los 1/10" 
    [2]=> 
    string(0) "" 
    [3]=> 
    string(2) "15" 
    [4]=> 
    string(1) "1" 
    [5]=> 
    string(4) "True" 
    [6]=> 
    string(1) "2" 
    [7]=> 
    string(2) "Cu" 
} 

$string = file_get_contents('file.txt'); 
$parts = explode("þ", $string); 
var_dump($parts); 

परिणाम:

array(1) { 
    [0]=> 
    string(42) "1þClassic Los 1/10þþ15þ1þTrueþ2þCú" 
} 

जब मैं file_get_contents का उपयोग करें (क्यों मुझे लगता है कि प्रतीक पर विस्फोट नहीं कर सकते हैं)?

+3

'file.txt' के लिए आप किस एन्कोडिंग का उपयोग कर रहे हैं? यदि यह यूटीएफ -8 है तो इसे सीधे बल्ले से काम करना चाहिए, लेकिन अगर यह कुछ और है तो शायद नहीं। –

+0

उस प्रतीक के बारे में डुनो, लेकिन क्या आपने उस प्रतीक को '% EXPLODE% जैसे कुछ और फिर अपने नए चर पर विस्फोट करने की कोशिश की है? – Peon

+0

JSON एन्कोडेड बहुत अधिक मानकीकृत और PHP अनुकूल है। – iambriansreed

उत्तर

7

प्रतीक की एन्कोडिंग जब आप इसे अपनी PHP स्क्रिप्ट में दर्ज करते हैं, और आपकी टेक्स्ट फ़ाइल में मेल खाना चाहिए।

सुनिश्चित करें कि एन्कोडिंग मिलान करें। यह देखने के लिए कि आपकी PHP स्क्रिप्ट को एन्कोडिंग के रूप में सहेजा जा रहा है, अपना आईडीई जांचें।

आप/या तो किसी कारण से एन्कोडिंग नहीं बदलते हैं तो होगा नहीं कर सकते ....

  • अपने PHP स्क्रिप्ट ISO-8859-1 है/विंडोज़ -1252, और पाठ फ़ाइल है UTF-8,

    $parts = explode(utf8_encode("þ"), $string); 
    
  • का उपयोग अपने PHP स्क्रिप्ट UTF-8, और पाठ फ़ाइल है ISO-8859-1/विंडोज़ -1252, का उपयोग है

    $parts = explode(utf8_decode("þ"), $string); 
    
  • यदि आपकी स्क्रिप्ट और आपकी टेक्स्ट फ़ाइल कुछ अन्य संयोजन हैं, तो आप iconv() का भी उपयोग कर सकते हैं।

+0

+1 क्या वह तब करेगा: '$ parts = विस्फोट (utf8_encode (" þ "), $ स्ट्रिंग);' या '$ parts = विस्फोट (utf8_decode (" þ "), $ string);'? – iambriansreed

+1

@anonymous yup, बिल्कुल। मैं –

+1

@ पेक्का - बिल्कुल सही, धन्यवाद करने के लिए संपादित करूंगा। –

3

PHP इसके विस्फोट के लिए कच्चे बाइट की तुलना करता है। चरित्र "þ" को कई अलग-अलग एन्कोडिंग में प्रदर्शित किया जा सकता है, जिसका अर्थ है विभिन्न बाइट्स का उपयोग करना। यदि आपके स्रोत कोड में वर्ण को सहेजा गया एन्कोडिंग file.txt (क्रमशः, यूटीएफ -8 और लैटिन 1) में से एक जैसा नहीं है, तो वे मेल नहीं खाएंगे और इसलिए explode नहीं होंगे।

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