Каким образом почистить и перезаписать большой файл с номерами телефона?

Есть большой файл приблизительно 20 000 номеров телефона, каким образом его перезаписать в другой файл, тоесть нужно в нем найти только русские номера мобильного и записать в новый файл

файл вида

11<|>79141515543<|>Vitalii Vashchenko<|>a7ZjxdNLjtY<|>
12<|>77772651321<|>Елена Морозова<|>m0EHQFvAWxM<|>
13<|>79051823252<|>Школа осознанного<|>nNG6VOmmwo4<|>
14<|>89029249896<|>Галина Смирнова<|>LPJQfEe2rRQ<|>
15<|>1200004731<|>Дневник Биохакера Agenyz.<|>C-SCw4kYKME<|>
16<|>79508105575<|>Наталья Кочеткова. БИФРИ<|>UQuRRwFu5Zc<|>
17<|>375293982389<|>Светлана Маспанова<|>zkPoD48ZcyA<|>
18<|>79208468499<|>наталья стукало<|>Ds0sxNiQTPU<|>
19<|>572379605211<|>marina bezgubenko<|>PyBbLogv4R4<|>
20<|>79295870389<|>Наталья Хонина<|>Ew4FM0mVJbA<|>
21<|>58510350<|>Наталья Знаменская<|>oevFdOdnU2Y<|>

Ответы (2 шт):

Автор решения: Vitaliy Reusch

функцией file разбиваешь файл на массив (одна ячейка — одна строка), циклом проходишься по каждой строке и номеру телефона, проверяешь его и если подходит по твоим критериям, кидаешь в файл.

$file = 'numbers.txt';
$lineArray = file($file);

for($i = 0; $i != count($lineArray); $i++)
{
    $line = explode('<|>', $lineArray[$i]);
    
    $result = /* проверка на РФ номер телефона */;
    if($result)
        file_put_contents('russian_numbers.txt', $lineArray[$i]);
}
→ Ссылка
Автор решения: phpBear
$in_filename = "phones.txt"; //имя файла с телефонами
$out_filename = "russian_phones.txt"; //имя файла куда будем писать российские телефоны

//Почему сразу не читать в массив? А если файл "весит" 1Гб или больше? 
//У вас на компьютере где вы запустите данный скрипт хватит памяти под такой массив?
$fp = @fopen($in_filename,'r');
if ( $fp ) {
    $fw = @fopen($out_filename,"w");
    if ( $fw ) {
        while ( !feof($fp) ) {
            //11<|>79141515543<|>Vitalii Vashchenko<|>a7ZjxdNLjtY<|>
            $line = fgets($fp, 1024);
            //Все российские номера начинаются на 7 и имеют длину 11 цифр
            if ( trim( $line ) != '' ) {
                if (preg_match("/\d+<\|>7[0-9]{10}<\|>.+?<\|>.+?<\|>/", trim( $line ) ) ) {
                    fputs($fw, $line);
                }
            }
        }
        fclose( $fw );
    } else {
        echo "ERROR: Output file \"".$out_filename."\" can't be created.\n";
    }
    fclose($fp);
} else {
    echo "ERROR: Input file \"".$in_filename."\" not found or can't be readed.\n";
}
→ Ссылка