2012-04-06 28 views
5

Her satırda 1 e-posta kimliğine sahip bir csv dosyası yaşıyorum. Her e-posta kimliğinden sonra virgül eklemek istiyorum. Php kullanarak her satırın sonuna bir virgül eklemek istiyorum. Bunu nasıl yapabilirim? Bunun için belirli bir işlevi var mı?Her satırın sonuna bir virgül ekleyin php kullanarak

UPDATE Bunun için javascript'te bir dizi oluşturabilirim.

php kullanarak csv dosyasını yükleyeceğim ve sonra js'mde yazdıracağım. Yani böyle bir şey modernleşmek olduğunu

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

gibi

.

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

Yoksa bunu yapmanın daha iyi bir yolu var mı? Böyle

+0

Her satıra virgül eklemek artık geçerli bir CSV dosyası yapmaz ??? Kullanım durumunuzu – Baba

+0

açıklayabilir miyim? Geçerli bir csv olmasını istiyorum. – esafwan

+0

Virgül bulunmayan dosyalar zaten geçerli CSV'lerdir. Yaşadığınız sorunun gerçek doğası nedir? Ayrıştırma başarısız mı? –

cevap

2

Neden csv özgü fonksiyonları kullanmayın, yapmalıdır?

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

Yukarıdaki kod, her satıra satır yeni csv yazacak, ama sadece bir javascript dizi oluşturmak istiyorsanız, neden bunu:

$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)); 

şey şerefe

+0

Şu anda virgül yeni bir sırada geliyor. :/Her bir e-posta kimliğinin sonu geldiğinde herhangi bir yolu var mı? – esafwan

+0

doğru, benim hatam, bir trim eklemelisiniz(): $ line = trim ($ line). ','; satır yerine $. = ','; – smassey

+0

hala çalışmıyor, kod güncellemek ve bana gösterebilir misin? – esafwan

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

Son güncellemenizi okuduktan sonra, bunu JS için ekleyeceğim, son satırdaki virgülü son satırdan kaldırmanız gerekir, çünkü bu dizinin JS'de kırılması gerekir: var myCars = []; – smassey

2

neden sadece

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

Tüm csv dizgesini yankılanmak yerine, dosyayı fgetcsv işlevini kullanarak bir diziye alabilir, ardından json_encode() öğesini kullanarak yineleyebilirsiniz. Bu şekilde geçerli bir javascript dizisi aldığınızdan emin olabilirsiniz. Ayrıca sizin için herhangi bir dizeyi alıntılayacak ve kodlayacaktır.

Dizeyi, tüm dizelerde utf8_encode çalıştıracak bazı yineleyicilerle çalıştırmayı unutmayın. Geçersiz utf8 karakterleriniz varsa, json_encode barf yapar.

Php.net'in bunun farklı kısımlarını yapması konusunda birçok örnek var, ancak gerekirse bazı örnekler verebiliyorum.