Есть несколько ссылок такого вида: Код (Text): <a href="http://user1.site.ru/data7"> <a href="http://user7.site.ru/data5"> <a href="http://user3.site.ru/data4"> <a href="http://user2.site.ru/data3"> Надо получить массив =[user1][data7] =[user7][data5] =[user3][data4] =[user2][data3] Пробовал так: Код (Text): $arr = array(); if (preg_match_all("!<a href=\"http://(.*?).site.ru/(.*?)\"!sui",$data,$ok)) { foreach ($ok as $v) { $arr[] = array($v[0],$v[1]); } } не выходит. Скорее всего регулярка не верно составлена. Помогите, кто знает, как надо? Благодарю заранее.
PHP: <?php $text = "<a href=\"http://user1.site.ru/data7\"> <a href=\"http://user7.site.ru/data5\"> <a href=\"http://user3.site.ru/data4\"> <a href=\"http://user2.site.ru/data3\">"; preg_match_all('#<a\s+href="http://([^.]+)\.site\.ru/([^"/]+)"#sUi', $text, $matches); echo '<pre>'.htmlspecialchars(print_r($matches, true)).'</pre>'; output:
Добрый-добрый вечер. Надеюсь топикстартер не против соседства, попробую задать вопрос по ссылкам в этом же топике. Есть небольшой парсер, сохраняет исходный код страницы в отдельную папку, оттуда нужно вытянуть все ссылки по маске. Маска указывается в виде переменной $site = 'site.ru'; Теперь в чём проблема: не могу составить запрос, который проверит каждый файл в папке /cache/ на наличие внутри урлов $site и выведет их списком. Внутри файлов: site.ru шепгеп site.ru/1 щгз9лзщ рнннн site.ru/2 site.ru/3 шзщо sertdft site.ru/тратата хзозохощш щлщл site.ru/пыщ-пыщ-пыщ пыщ-пыщ gyyguyg site.ru/?????? ???? site.ru/PROFIT! !! ====================== В итоге нужно получить списком: site.ru site.ru/1 site.ru/2 site.ru/3 site.ru/тратата site.ru/пыщ-пыщ-пыщ site.ru/?????? site.ru/PROFIT! Заранее спасибо.
Mad_Man не совсем ясна задача, но список файлов можно получить к примеру функцией glob затем получать содержимое каждого файла через file_get_contents и парсить это содержимое с помощью регулярки preg_match_all('#site\.ru[^ ]*#sUi', $file_text, $matches) в итоге получить все ссылки в массиве $matches. стоит иметь в виду, что внутри регулярки точку необходимо экранировать обратным слешом, т.е. site.ru станет site\.ru