По идеи каждый элемент массива $tok[1] должен сравниваться со всеми элементами массива $txt_file. если такого элемента нет то он записывается в файл $fp. Что не правильно. Запись в файл есть, но только одинаковые значения все равно пишет, почему? 614 504 229 если не сложно стучите. Code: $fp=fopen("idnumber.txt","a"); preg_match_all( '/<a href=(.*)><img src="https:\/\//', $a , $tok, PREG_PATTERN_ORDER ); foreach ($tok[1] as $value) { $txt_file = file("idnumber.txt"); if (in_array($value, $txt_file)) { echo "1"; } else{ fwrite($fp, "\r\n" . $value); } }
Code: $fp=fopen("idnumber.txt","a"); preg_match_all( '/<a href=(.*)><img src="https:\/\//', $a , $tok, PREG_PATTERN_ORDER ); $txt_file = file("idnumber.txt"); // Нужно открывать файл до цикла. // Сдесь можно считать файл в массив и тогда уже работать с массивом. // Можно будет результат слаживать в массив, а потом этот массив записывать в файл, => // fwrite() будет вызыватся один раз после выполнения необходимых операций. foreach ($tok[1] as $value) if (in_array($value, $txt_file)) { echo "1"; } else{ fwrite($fp, "\r\n" . $value); }
После file() строки в массив попадают с переносами (\r\n), а в in_array() ты проверяешь строки без переносов.