2016-10-25 1 views
0

PHP를 사용하여 일부 단어를 바꾸어야하는 .csv 파일이 있습니다 (예 : 활성). 그러나 파일의 값은 쉼표가 아닌 공백으로 구분되어있는 것으로 보이며 파일에서 읽는 올바른 방법이 무엇인지 잘 모르겠습니다. 변경 내용을 적용한 다음 구조를 손상시키지 않기 위해 파일에 다시 씁니다. 및 조직 (이것이 문제가 될 수있는 경우)..csv 파일의 데이터를 바꾸는 방법 공백을 구분 기호로 사용하는 PHP

이 행에 의해 내용이 내가

file_get_contents(); 

다시 더 혼수 상태가없는 사용하여 파일의 내용을 얻을 경우

str_getcsv(); 

[1]=> array(1) { [0]=> string(193) "Format Version 4 " } 

[2]=> array(1) { [0]=> string(359) "Campaign Active KNCTR 20 DailyBudgetAccelerated HelsinkiKyivRigaSofiaTallinnVilnius 2016-10-11 11:05:43Z " } 

[3]=> array(1) { [0]=> string(325) "Campaign Location Target Active Active KNCTR AU PeopleIn 0 Australia 2016-10-06 14:25:13Z " } 

[4]=> array(1) { [0]=> string(319) "Campaign Location Target Active Active KNCTR CA PeopleIn 0 Canada 2016-10-06 14:25:13Z " } 

를 사용하여 표시 할 때 모습입니다.

그래서 내가 문서를 손상시키지 않고 필요한 단어 만 바꾸도록 변경 사항을 제안 하시겠습니까?

필자는 이러한 종류의 파일에 대한 경험이 없으므로 내 질문에 명확한 내용이 필요할 수 있습니다. 고맙습니다!

+0

표시 한 배열을 가지고 있다면 간단합니다. 모든 행을 반복하고 모든 열을 반복하며'preg_replace'를 사용하여 단어를 바꿉니다. tmp csv 파일을 만들고, 새로운 값을 넣고, 끝나면 원래 파일의 이름을'myfile.csv.old'와 같은 것으로 변경하고 임시 파일의 이름을 orig 파일 이름으로 변경하십시오. – vaso123

+0

str_getcsv 호출에서 올바른 구분 기호를 지정하여 시작하십시오. – CBroe

답변

1

다른 구분 기호 (쉼표 대신 공백)를 지정하여 csv 데이터를 구문 분석 할 수 있지만 필요하지 않은이 특정 작업에는 csv 데이터를 구문 분석 할 수 있습니다. 그냥 검색 +에서 - 장소 특정 단어를 대체 : 펑키 정규식은 단어의 일부 경우 Active을 교체하는 일이 없도록하는 것입니다

$csv = file_get_contents("your file with spaces.csv"); 
$search = "Active"; 
$replace = "Passive"; 
$csv = preg_replace("/(^|\\s)$search(\\s|$)/si","\\1$replace\\2",$csv); 
file_put_contents("modified.csv",$csv); 

참고. 예를 들어, Actively 또는 Interactive과 같은 단어가 데이터 어딘가에 있으면 대체하지 않을 것입니다. 그렇게하면 간단하게 사용할 수 있습니다. $csv = str_replace('Active','Passive',$csv);

대소 문자를 구별하려면 예 : 을 바꾸되 active이 아닐 경우 /si 정규식 플래그 끝에 i 수정자를 제거하십시오.

+0

내가 걱정하는 것은 .csv 파일에 다시 쓸 때 줄이 수정 전에 파일의 줄과 일치해야한다는 것입니까? 나는 위의 당신의 제안을 정말로 좋아합니다, 이것이 저를 귀찮게하는 유일한 것입니다. – Dimentica

+0

위의 코드는 파일의 구조를 변경하지 않습니다. 그것이 CSV 또는 다른 형식인지에 관계없이. 단어를 다른 단어로만 변경합니다. 실제로 쉼표로 구분 된 .csv 파일에도 사용하려면 (예 : 쉼표를 사용하고 공백없이) 정규 표현식을 다음과 같이 변경해야합니다.'/ (^ | \\ s) |,) $ search (\\ s |, | $)/si "' – RocketNuts

+0

설명해 주셔서 대단히 감사합니다. – Dimentica

관련 문제