переход с php 5.3 на php 7.4 preg_replace

85
18 января 2022, 11:10

Вообщем перестал грабить с обновлением php до последней версии старый код работал

$grab=@file_get_contents("./eset_upd/update.ver"); 
$grab = ereg_replace('(.*)ENGINE2]','', $grab);  
if ($grab!="") { 
  eregi("versionid=([0-9\.]+)",$grab,$pocket); 
  eregi("date=([0-9\.]+)",$grab,$pocket2); 
  $txt=" {$pocket[1]} ({$pocket2[1]})"; 
} 
else { 
  $txt=" No connection :("; 
}
Переделал на новый, берет первое выражение

$grab=@file_get_contents("./eset_upd/update.ver"); 
$grab = preg_replace('/(.)ENGINE2]/','', $grab);  
if ($grab!="") { 
  preg_match("#versionid=([0-9\.]+)#",$grab,$pocket); 
  preg_match("#date=([0-9\.]+)#",$grab,$pocket2); 
  $txt=" {$pocket[1]} ({$pocket2[1]})"; 
} 
else { 
  $txt=" No connection :("; 
}

Ссылка на файл откуда грабит. http://update.eset.com/eset_upd/update.ver

Answer 1

Для глобального поиска (все вхождения) используйте preg_match_all()

Учитывайте что в вашем случае, с использованием preg_match_all(), $pocket[1] и $pocket2[1] будут массивами

UPD. Полная версия:

$grab=@file_get_contents("./eset_upd/update.ver");    
preg_match_all('~(?<=ENGINE2]).*?(?=\[CONTINUOUS)~si', $grab, $matches);
if($matches){
    foreach($matches[0] as $k => $str){
        preg_match_all("~(?<=versionid=)[0-9\.]+~",$str,$pocket[$k]);
        preg_match_all("~(?<=date=)[0-9\.]+~",$str,$pocket2[$k]);
    }
    $txt = "";
    for ($i=0;$i<count($pocket);$i++){ 
        $txt .= " {$pocket[$i][0][0]} ({$pocket2[$i][0][0]}) ";
    }
} else {
  $txt=" No connection :(";
}
READ ALSO
Как убрать относительные пути в коде?

Как убрать относительные пути в коде?

Есть dom-дерево файла htmlВ файле прописаны относительные пути к файлам стилей, картинкам, скриптам, например:

133
Почему file_put_contents() создает пустой файл?

Почему file_put_contents() создает пустой файл?

В цикле через file_get_contents() открываются файлы, и через file_put_contents() сохраняются:

191
Связи MySQL или средства PHP

Связи MySQL или средства PHP

Когда лучше использовать между таблицами БД (в моем случае MySQL) встроенные связи ( один к одному, один ко многим и тд

105
Как в smarty сложить значения переменных?

Как в smarty сложить значения переменных?

Есть код вывода итоговой цены в корзине:

90