@Badarus

Как циклом пройтись по ссылкам из файла и регуляркой вытащить из ресурса ссылки?

$file = file("uristhome_start_link.txt");
$count = count($file);
$start_count = 0;
$link = $file[$start_count++];

//var_dump($link); выводит корректно
//var_dump($count); 4003 ссылки

foreach($link as $clink){
    if($start_count <= $count){
        $get_html = file_get_contents($clink);
        preg_match_all('/<a.*?>(.*?)<\/a>/i', $get_html, $matches); // лучше конечно парсить по классу объекта а не все ссылки разом
        print_r($matches[1]. "<br />");
    }
}


Код со страницы откуда хочу вытянуть информацию:
<div class="filefield-file"><img class="filefield-icon field-icon-application-vnd-ms-excel" alt="application/vnd.ms-excel icon" src="https://uristhome.ru/sites/all/modules/filefield/icons/x-office-spreadsheet.png"><a href="https://uristhome.ru/sites/default/files/doc/ks-6a.xls" type="application/vnd.ms-excel; length=51712" title="ks-6a.xls">Типовой бланк и форма КС-6а</a></div>


нужна ссылка на загрузка файла

Пытаюсь пройтись по массиву с ссылками из файла, но ничего не работает) может кто поспособствует и поможет в решение вопроса?
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
IgorPI
@IgorPI
Попробуйте это https://regex101.com/r/vMaWqd/1

const regex = /(https?):\/\/([0-9a-z.\-\/]+)/g;

// Alternative syntax using RegExp constructor
// const regex = new RegExp('(https?):\\/\\/([0-9a-z.\\-\\/]+)', 'g')

const str = `<div class="filefield-file"><img class="filefield-icon field-icon-application-vnd-ms-excel" alt="application/vnd.ms-excel icon" src="http://uristhome.ru/sites/all/modules/filefield/icons/x-office-spreadsheet.png"><a href="https://uristhome.ru/sites/default/files/doc/ks-6a.xls" type="application/vnd.ms-excel; length=51712" title="ks-6a.xls">Типовой бланк и форма КС-6а</a></div>
`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы