php

2012-04-06 23 views
5

का उपयोग कर प्रत्येक पंक्ति के अंत में एक अल्पविराम जोड़ें I प्रत्येक पंक्ति में 1 ईमेल आईडी के साथ एक सीएसवी फ़ाइल है। मैं प्रत्येक ईमेल आईडी के बाद अल्पविराम जोड़ना चाहता हूं। मैं PHP का उपयोग कर प्रत्येक पंक्ति के अंत में एक अल्पविराम जोड़ना चाहता हूं। मैं यह कैसे कर सकता हूँ? क्या इसके लिए कोई विशेष कार्य है?php

अद्यतन मुझे यह चाहिए कि मैं जावास्क्रिप्ट में इसे से बाहर एक सरणी बना सकता हूं।

मैं php का उपयोग कर सीएसवी फ़ाइल लोड कर रहा हूं और फिर इसे अपने जेएस में प्रिंट कर रहा हूं।

तरह

var myCars=[<?php print $csv; ?>]; 

तो यह है कि मैं कुछ इस तरह प्राप्त

var myCars=["[email protected]","[email protected]","[email protected]"]; 

या ऐसा करने का कोई बेहतर तरीका है?

+0

प्रत्येक पंक्ति को अल्पविराम जोड़ना अब इसे एक वैध CSV फ़ाइल नहीं बनायेगा ??? क्या आप अपना उपयोग केस – Baba

+0

समझा सकते हैं, मैं इसे वैध सीएसवी होना चाहता हूं। – esafwan

+0

कॉमा के बिना फ़ाइलें पहले से ही वैध सीएसवी हैं। आप जिस समस्या का सामना कर रहे हैं उसकी वास्तविक प्रकृति क्या है? पार्स करने में विफलता? –

उत्तर

2

क्यों सीएसवी-विशिष्ट कार्यों का उपयोग नहीं?

$old = fopen('file.csv','r'); 
$new = fopen('new.csv','w+'); 
while($line = fgetcsv($old)) 
{ 
    fputcsv($new,$line); 
} 
fclose($old); 
fclose($new); 

ऊपर कोड एक नया सीएसवी प्रति पंक्ति लाइन लिखेंगे,, लेकिन अगर आप सिर्फ एक जावास्क्रिप्ट सरणी जनरेट करना चाहते हैं, क्यों ऐसा नहीं:

$file = fopen ('file.csv','r'); 
$all = array(); 
while($line = fgetcsv($file)) 
{ 
    $all[] = $line[0];//if there is only 1 field/line 
    $all = array_merge($all,$line);//if multiple 
} 
fclose($file); 
$js_array = '["'.implode('",',$all).'"];'; 
//or, the way I'd advise against, but good for multi-dimensional, assoc arrays 
echo 'var array = JSON.parse("'.json_encode($all).'");'; 
5
$lines = file('file.csv'); 
foreach ($lines as & $line) { 
    $line .= ','; 
} 
file_put_contents('file.new.csv', implode(PHP_EOL, $lines)); 

कुछ ऐसा करना चाहिए, चियर्स

+0

वर्तमान में अल्पविराम नई लाइन में आ रहा है। :/क्या कोई तरीका है कि यह प्रत्येक ईमेल आईडी का अंत आता है? – esafwan

+0

सही, मेरी गलती, एक ट्रिम(): $ line = trim ($ line) जोड़ना चाहिए। ','; $ लाइन के बजाय। = ','; – smassey

+0

अभी भी मुझे लगता है कि काम नहीं कर रहा है, क्या आप कोड में अपडेट कर सकते हैं और मुझे दिखा सकते हैं? – esafwan

2
<?php 
$lines = file('org.csv'); 
foreach ($lines as & $line) { 
    $line = trim($line) . ','; 
} 
file_put_contents('new.csv', implode(PHP_EOL, $lines)); 
+1

अपने अंतिम अपडेट को पढ़ने के बाद, मैं इसे जेएस के लिए जोड़ना चाहता हूं, आपको अंतिम पंक्ति से अंतिम पिछली कॉमा को हटाने की आवश्यकता है, अन्यथा सरणी जेएस में टूट जाएगी: var myCars = []; – smassey

2

क्यों न सिर्फ

$csv = str_replace("\n", ",\n", $csv); 
2

एक संपूर्ण सीएसवी स्ट्रिंग को प्रतिबिंबित करने के बजाय, आप fgetcsv फ़ंक्शन का उपयोग करके फ़ाइल को सरणी में आयात कर सकते हैं, फिर json_encode() का उपयोग करके इसे बाहर निकालें। इस तरह आप एक वैध जावास्क्रिप्ट सरणी प्राप्त करने के लिए सुनिश्चित हैं। यह आपके लिए किसी भी तार को उद्धृत और एन्कोड करेगा।

ओह, कुछ इटरेटर के माध्यम से सरणी चलाने के लिए याद रखें जो सभी तारों पर utf8_encode चलाएगा। अगर आपके पास अवैध utf8 वर्ण हैं, तो json_encode बारफ होगा।

इस के विभिन्न हिस्सों को करने के php.net पर बहुत सारे उदाहरण हैं, लेकिन यदि आवश्यक हो तो मैं कुछ उदाहरण प्रदान कर सकता हूं।