Что не имеет смысла, так это то, что вы всегда записываете текущий URL в этот файл, перезаписывая его предыдущее содержимое. На каждом этапе цикла foreach вы снова открываете этот файл, стираете его содержимое и записываете в него один URL. На следующем шаге вы снова открываете тот же файл и делаете это снова. Вот почему в итоге вы получите только последний URL в этом файле.
Вам нужно собрать все URL-адреса в массиве, выбросить дубликаты, а затем записать уникальные на диск:
$lines = file($fopen2);
$urls = array(); // <-- create empty array for the urls
foreach ($lines as $line) {
$rfi_links = explode('=', $line, 2); // <-- you need only two parts, rights?
$urls[] = $rfi_links[0]; // <-- push new URL to the array
}
// Remove duplicates from the array
$links_duplicate_removed = array_unique($urls);
// Write unique urls to the file:
file_put_contents($rfi.$file.$ext, implode(PHP_EOL, $links_duplicate_removed));
Другое решение (гораздо более вдохновленное вашим прежним методом) состоит в том, чтобы открыть файл один раз, прежде чем начать итерацию по строкам:
$lines = file($fopen2);
$urls = array();
// Open file
$fp = fopen($rfi.$file.$ext, 'w');
foreach ($lines as $line) {
$rfi_url = explode('=', $line, 2);
// check if that url is new
if (!in_array($rfi_url[0], $urls)) {
// it is new, so add it to the array (=mark it as "already occured")
$urls[] = $rfi_url[0];
// Write new url to the file
fputs($fp, $rfi_url[0] . PHP_EOL);
}
}
// Close the file
fclose($fp);