2015-03-20 7 views
0

У меня есть некоторые проблемы, мне нужно найти определенный текст во всех файлах каталога, если текст появляется внутри одного или нескольких TXT. Мне нужно скопировать файл в две папки, а затем удалить исходный.Поиск во всех файлах каталога, а затем перемещение с использованием PHP

Это код, который я до сих пор (я знаю, что нет ничего)

<?php 
$dir = 'C:\Users\ramosala\Desktop\New folder (2)'; 
if (is_dir($dir)) { 
    if ($dh = scandir($dir)) { 
     while (($file = readdir($dh)) !== false) { 
      $Word="serie  = SMO"; 
      if ($Word){ 
       echo "La factura pertenece a Coppel"; 
       $encuentra=TRUE; 
       copy('C:\Users\ramosala\Desktop\New folder(2)',  'C:\Users\ramosala\Documents\Prueba Coppel\''); 
       copy('C:\Users\ramosala\Desktop\New folder(2)', 'C:\Users\ramosala\Documents\Prueba Coppel 2\''); 
       unlink('C:\Users\ramosala\Desktop\New folder(2)'); 
      } 
      if($encuentra!=TRUE){ 
       echo 'No Pertenece a Coppel'; 

      }   
     } 
    } 
} 

?> 
+0

Проблемы с вопросом А) Кто-то должен написать все эти код для вас, и B) Мы понятия не имеем о вашей структуре - приложении, структуре, вы используете несколько скриптов? Поэтому кто-то может написать вам замечательный PHP-класс OOP для этого, и вы, возможно, не знаете, как его использовать или сможете его реализовать. Что-то такого размера, вам нужно начать сами, и когда вы застреваете, задайте конкретный вопрос о своем коде. – James

+0

Это, вероятно, будет проще всего написать в bash с вызовами 'grep',' cp' и 'mv' или' rm'. Альтернативно, если вам нужна более мощная обработка строк, perl - это путь (IMO). Попробуйте написать его, а затем опубликуйте, что вы получите. –

ответ

0

Полного прототип:

$sDirectory  = 'file-fun'; 
$sNewDirectory = 'file-fun2'; 
$sNewDirectory2 = 'file-fun3'; 
if(!is_dir($sNewDirectory)) 
{ 
    mkdir($sNewDirectory, 0777, TRUE); 
} 
if(!is_dir($sNewDirectory2)) 
{ 
    mkdir($sNewDirectory2, 0777, TRUE); 
} 
$sFilter = '12'; 
if(is_dir($sDirectory)) 
{ 
    $rDir = opendir($sDirectory); 
    while(($sFile = readdir($rDir)) !== FALSE) 
    { 
     if(($sFile == '.') || ($sFile === '..')) 
     { 
      continue; 
     } 
     $sFilePath = $sDirectory . '/' . $sFile; 
     $sContents = file_get_contents($sFilePath); 
     if(strpos($sContents, $sFilter) !== FALSE) 
     { 
      $sNewFileName = $sNewDirectory . '/' . $sFile; 
      $sNewFileName2 = $sNewDirectory2 . '/' . $sFile; 
      if(!copy($sFilePath, $sNewFileName) || !copy($sFilePath, $sNewFileName2)) 
      { 
       echo 'Could not move: ' . $sFile; 
      } 
      else 
      { 
       unlink($sFilePath); 
      } 
     } 
    } 
} 
+0

Ничего себе, спасибо! Это действительно то, что я хотел сделать, теперь я просто собираюсь понять, как добавить строку thext, которая перемещает файл в зависимости от его содержимого. –

+0

У меня остался один вопрос: возможно ли переместить файлы на другой компьютер в локальной сети? –

+0

Проверьте ftp_get и curl. Другой вариант - посмотреть на exec, но я был бы очень осторожен с этой командой. –