Как заменить текст в файле .csv с помощью PHP?

Иван Терешенко
Иван Терешенко
  • Сообщений: 7
  • Последний визит: 20 января 2025 в 23:10

Здравствуйте. Функция str_replace() заменяет только в файлах .xml.


Пример кода:

<?php 
	$files_parameters = [
		[		
			'name' =>  'uploads/loaded-3.csv',
			'result' => 'uploads/decode-3.csv',
			'change-from' => 'Российский рубль',
			'change-to' => 'RUB'
			
			]
	];
	
	foreach($files_parameters as $file) {<p>		if (file_exists($file['name'])) {
			$source = @fopen($file['name'],'r');
			if ($source) {	
				$target = @fopen($file['result'],'w+');
				$f = 0;
				while (!@feof($source)) {	
					$st = @fgets($source, 4096);
					$pos = strpos($st, $file['change-from']);
					if ($pos or $f) {	
	
						$st = str_replace($file['result'], $file['change-to'], $st);
						if (substr_count($st, '</param>')) {
							$f = 0;
							$st = str_replace('param', 'art', $st);
						} else $f = 1;
							
					}
					fwrite($target, $st);
				}	
					
				@fclose($source);
				@fclose($target);
			}
		}	}
	
?>
Редактировалось: 4 раза (Последний: 20 января 2025 в 23:04)
Андрей Живов
Андрей Живов
  • Сообщений: 13
  • Последний визит: 20 января 2025 в 23:16

Угу. Сначала понаставим @, чтобы скрыть все ошибки, а потом будем голову ломать, почему ничего не работает и ошибок не показывает.


А вообще, это делается в одну строку.

file_put_contents($outfilename, str_replace('Российский рубль', 'RUB', file_get_contents($infilename)));
Редактировалось: 1 раз (Последний: 20 января 2025 в 23:04)
Иван Терешенко
Иван Терешенко
  • Сообщений: 7
  • Последний визит: 20 января 2025 в 23:10

Подошёл этот код:

$path_to_file = "uploads/loaded-3.csv"; $file_contents = file_get_contents($path_to_file); $file_contents = str_replace("Российский рубль","RUB",$file_contents); file_put_contents('uploads/decode-3.csv',$file_contents);
Редактировалось: 1 раз (Последний: 20 января 2025 в 23:05)
Авторизуйтесь, чтобы писать на форуме.

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон