Скрипт для замены ссылок в дорах ищу

Статус
В этой теме нельзя размещать новые ответы.

SergeiSP

Постоялец
Регистрация
13 Фев 2007
Сообщения
375
Реакции
120
Привет. Возникла такая проблемка - нужно на нескольких дорах поменять ссылки на партнерку. В дорах по 1000 файлов. Может есть скрипт какой-нибудь, который перебирает все файлы, ищет там искомую строчку и меняет на нужную?
 
Funduc Search and Replace 6.1



Программа проводит поиск и замену заданных выражений (ссылок) в нескольких файлах и каталогах.
 
Вот этим скриптом можно
Код:
<?
$work_dir="./"; 		
// рабочая директория - обязательно должна заканчиваться
// символом "/"

$excl_dir=array();
$excl_dir[0]="./no_work_here/"; 		
$excl_dir[1]="./and_here/and_here/";

// директории, где поиск/замена не производятся - обязательно должны заканчиваться
// символом "/"


$file_mask_1=".html";	
$file_mask_2=".js";
// маски обрабатываемых файлов (будут обработаны все файлы,
// содержащие данную строку в имени)

$search_str="test";	#что ищем
$replace_str="TEST";	#чем заменяем

//******************************************************

$level=0;

function sr($dir)
{
global $level,$file_mask_1,$file_mask_2,$search_str,$replace_str,$excl_dir;
echo "<b>";
for ($i=0;$i<$level;$i++) echo "* * ";
echo $dir."</b>";

if (@in_array($dir,$excl_dir))
{
echo " - needn't search & replace<br>";
return;
}

echo "<br>";

$p = dir($dir);
while($ent=$p->read()) 
{
if ($ent!="." && $ent!=".." && !is_dir($dir . $ent) && (eregi(sql_regcase($file_mask_1),$ent) || eregi(sql_regcase($file_mask_2),$ent)))
{
$tmp=@file($dir.$ent);
$str=@implode("",$tmp);

if (strpos("@!#%xrenoder^&*()".$str,$search_str))
{
for ($i=0;$i<($level)+1;$i++) echo "* * ";
echo $dir.$ent." found...";

$str=str_replace($search_str,$replace_str,$str);

if ($fp=@fopen($dir.$ent, "w"))
{
flock($fp,LOCK_EX); 	
fwrite($fp,$str);
fclose($fp);
echo " and replace<br>";
}
else echo " and <b>can't replace</b><br>";
}

}
elseif($ent!="." and $ent!=".." and is_dir($dir . $ent))
{
$level++;
sr($dir.$ent."/");
$level--;
}
}
$p->close();

return;
}

sr($work_dir);

echo "SEARCH & REPLACE Complete";

?>
 
Вот этим скриптом можно
Код:
<?
$work_dir="./"; 		
// рабочая директория - обязательно должна заканчиваться
// символом "/"

$excl_dir=array();
$excl_dir[0]="./no_work_here/"; 		
$excl_dir[1]="./and_here/and_here/";

// директории, где поиск/замена не производятся - обязательно должны заканчиваться
// символом "/"


$file_mask_1=".html";	
$file_mask_2=".js";
// маски обрабатываемых файлов (будут обработаны все файлы,
// содержащие данную строку в имени)

$search_str="test";	#что ищем
$replace_str="TEST";	#чем заменяем

//******************************************************

$level=0;

function sr($dir)
{
global $level,$file_mask_1,$file_mask_2,$search_str,$replace_str,$excl_dir;
echo "<b>";
for ($i=0;$i<$level;$i++) echo "* * ";
echo $dir."</b>";

if (@in_array($dir,$excl_dir))
{
echo " - needn't search & replace<br>";
return;
}

echo "<br>";

$p = dir($dir);
while($ent=$p->read()) 
{
if ($ent!="." && $ent!=".." && !is_dir($dir . $ent) && (eregi(sql_regcase($file_mask_1),$ent) || eregi(sql_regcase($file_mask_2),$ent)))
{
$tmp=@file($dir.$ent);
$str=@implode("",$tmp);

if (strpos("@!#%xrenoder^&*()".$str,$search_str))
{
for ($i=0;$i<($level)+1;$i++) echo "* * ";
echo $dir.$ent." found...";

$str=str_replace($search_str,$replace_str,$str);

if ($fp=@fopen($dir.$ent, "w"))
{
flock($fp,LOCK_EX); 	
fwrite($fp,$str);
fclose($fp);
echo " and replace<br>";
}
else echo " and <b>can't replace</b><br>";
}

}
elseif($ent!="." and $ent!=".." and is_dir($dir . $ent))
{
$level++;
sr($dir.$ent."/");
$level--;
}
}
$p->close();

return;
}

sr($work_dir);

echo "SEARCH & REPLACE Complete";

?>

А как сделать, чтоб скрипт по FTP к папке с дорами коннектился и производил замену ? Или его обязательно надо на хостинге где доры находятся размещать ?
 
Я лично @Text Replacer пользуюсь маленьяка быстрая и легкая прожка. Правдо дор придеться скачать себе а потом обратно :)
 
десктопная фриваре
_ttp://www.yanakayevs.narod.ru/soft/replace.exe
 
вообще Power Grep рулит в этом деле)
но, опять же, удаленно не может...
 
Скажите, если я запускаю скрипт (выложенный myid37 ) из директории, (в которой находится сам скрипт и файлы, которые собираюсь править), то код где указывается рабочая директория - $work_dir="./"; править не нужно, я правильно понимаю?

И что означает эта ошибка?
Warning: strpos() [function.strpos]: Empty delimiter in /путь директории/sr.php on line 49
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху