Задача, заменить кусок из N - кол-ва текстовых файлов.

Reknes
На сайте с 01.03.2010
Offline
85
916

Кто подскажет каким софтом можно сделать?

Задача, заменить кусок из N - кол-ва текстовых файлов.

К примеру, есть 30 файлов с содержанием:

Привет! Наш замечательный сайт http://site.ru/1 .

Привет! Наш замечательный сайт http://site.ru/151 .
Привет! Наш замечательный сайт http://site.ru/16125 .
и так далее.

Нужно поменять

на

И сделать это так, что бы они поменялись по порядку, т.е. к 1 строке 1 строка новой замены, и т.д.

Соответственно руками делать это долго и нудно, нужно массово... есть такой софт?

Dos3
На сайте с 07.01.2011
Offline
363
#1

покажи часть реальных данных из обоих файлов, чтобы регулярку правильно настроить

Reknes
На сайте с 01.03.2010
Offline
85
#2
Dos3:
покажи часть реальных данных из обоих файлов, чтобы регулярку правильно настроить

Ну смотри, реальные данные - это ссылка.

Именно её нужно менять:

http://bit.ly/naIWOo
такую маску нужно менять будет

или же от гугла

http://goo.gl/Syw2z

менять по списку на мои ссылки по порядку (которые к примеру будут в каком-то .txt файле)

john777
На сайте с 19.02.2010
Offline
94
#3

Посмотри Словогрыз, может поможет

alex-bot
На сайте с 19.04.2008
Offline
82
#4

TextPipePro - фильтр замена по списку из Excel в столбики соответственно указываем что заменять и чем... добавляем файлы пара секунд и готово...

Dos3
На сайте с 07.01.2011
Offline
363
#5

1) в корне создай папку files и положи в неё все файлы в которых нужно заменить

2) в корне создай файл zamena.txt и положи в него ссылки на которые нужно заменить, по одной на строку

<?php

set_time_limit(0);
$zamena = str_replace("\r\n", "", file("zamena.txt"));

$arr_name_file = scandir("files");

$i=0;

foreach($arr_name_file as $file_name){

if($file_name != "." and $file_name != ".."){

$file = file_get_contents("files/$file_name");

preg_match_all("#(http:\/\/.*) #U", $file, $arr_url);

foreach($arr_url[1] as $val){

$file = preg_replace("#$val#", $zamena[$i] , $file, 1);

$i++;
}
file_put_contents("files/$file_name", $file);
//echo $file,"<br>";
}
}
?>

что то форум первый вариант покоцал, используй код ниже )

<?php
set_time_limit(0);
$zamena = str_replace("\r\n", "", file("zamena.txt"));

$arr_name_file = scandir("files");

$i=0;

foreach($arr_name_file as $file_name){

if($file_name != "." and $file_name != ".."){

$file = file_get_contents("files/$file_name");

preg_match_all("#(http:\/\/.*) #U", $file, $arr_url);

foreach($arr_url[1] as $val){

$file = preg_replace("#$val#", $zamena[$i] , $file, 1);

$i++;
}
file_put_contents("files/$file_name", $file);
//echo $file,"<br>";
}
}
?>

ps подразумевается что после ссылок(в файлах в которых нужно заменять) идёт пробел, если у тебя не так (к примеру после ссылок идёт перенос строки) то пиши, исправлю )

Reknes
На сайте с 01.03.2010
Offline
85
#6

Всем спасибо :)

T
На сайте с 13.06.2011
Offline
36
#7

на php для 1 файла

$a = file ('N.txt');

$b = file('Nzamena.txt');

for($i=0;$i<count($a);$i++){

$arr[] = preg_replace("#.+#s", $b[$i], $a[$i]);

}

file_put_contents('out.txt', implode("", $arr));

не тестил, но должно работать.

если хочешь скрипт, который будет сразу все обрабатывать, обращайся, накатаю за бабло.

или кури php.net и катай сам, ничего сложного.

или ищи другой выход)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий