2013-09-28 49 views
0

所以基本上我打開一個大文件(我認爲它很大--19MB),並試圖梳理出任何不是4個字母的.com,並在今天的日期從註冊表中刪除。所以我在下面試圖做的是調用這個文件,並且爲它的每一行找到帶有日期的字符串,字符數小於或等於35(在剝離字符之前)。我在做什麼錯? strpos,strlen和preg_match

然後我希望它能檢查它是一個.com沒有缺失並且不包含連字符。

我錯過了什麼?

<?php 

date_default_timezone_set('UTC'); 

$extension = '.com'; 
$lines = file('PoolDeletingDomainsList.txt'); 
//$lines = file('testdomains.txt'); 
$date = date('n/j/Y'); 

echo "<b>4 Letter premiums for ". $date .":</b><br />"; 

foreach($lines as $line) 

if ((false !== strpos($line,$date)) && (35 <= strlen($line))) { 

    $line = preg_replace('/12:00:00 AM,AUC\b/','<br />', $line); 
    $line = preg_replace('/,9\/28\/2013/', '', $line); 

    if ((false !== strpos($line, $extension)) && (0 === preg_match('#\d#',$line)) && (0 === preg_match('/-/', $line))){ 
    echo $line; 
} 
} 
?> 
+1

我可以注意到的第一件事是35 <= strlen意味着「至少35個字符長的行」,而不是「35個字符或更少」 –

+0

我是個白癡。 Drop文件今天不包含:@ – CodingNoob

+0

所有正在使用上述+ Paul的修復程序。 – CodingNoob

回答

1

嘗試(35 >= strlen($line)而不是(35 <= strlen($line)如果你想行35個字符以下。就我個人而言,我更喜歡以其他方式進行比較,例如strlen($line) <= 35,我認爲它更具可讀性,可以避免像剛剛製作的那樣的錯誤:)

+0

是的,我切換它們,原來如上所述,我想這沒什麼區別,但容易忘記翻轉符號。 。 – CodingNoob