Visa ett inlägg
Oläst 2014-07-29, 11:51 #2
tec tec är inte uppkopplad
Medlem
 
Reg.datum: Mar 2010
Inlägg: 54
tec tec är inte uppkopplad
Medlem
 
Reg.datum: Mar 2010
Inlägg: 54
PHP-kod:
<?php
$strings 
file(".\search_for.txt"FILE_IGNORE_NEW_LINES);

foreach(
$strings as $key => $searchfor){
        
$directory './archive_backup';
        
$files array_diff(scandir($directory), array('..','.'));

        foreach(
$files as $file) { 
            
$file "./archive_backup/" $file;
            
$contents file_get_contents($file);
                
        
/*
        * kollar om $searchfor finns i $contents
        * !== false undviker att strpos missar $searchfor i början på strängen
        * strpos med inga träffar returnerar 0, strpos med träff från första tecken returnerar 0         
        */
        
if(strpos($contents$searchfor) !== false){  
          
// $searchfor finns i $contents och därmed i $file
                                  
           
unset($strings[$key]); // plocka bort värdet från högen(array) - endast de som inte hittas kommer att finnas kvar
           
break; // hoppa ur foreach($files as $file) // nuvarande $searchfor redan hittad - gå vidare på nästa                    
        
}
    }
}
echo 
'<pre>';
print_r($strings); // skriv ut de värden som inte har plockats bort
echo '</pre>';    
?>
Något sånt här borde fungera, byggde vidare på din kod. Ska det ske så effektivt som möjligt så bör alla nummer läsas in i en array som du sedan kör array_diff() på mot search_for-numrena. Är det extrema mängder så är array_diff_key() snabbare - kräver dock att du lägger numrena som keys i alla arrays.
tec är inte uppkopplad   Svara med citatSvara med citat