Intereting Posts
PHP MySQL Греческие буквы, показанные как ???? Метки Создание алгоритма сворачивания баннеров для поворота рекламы Эффективное копирование / дублирование / резервное копирование таблиц базы данных – mysql Поиск данных и удаление данных из текстового файла с использованием php Как преобразовать массив объектов в массив? Многомерный массив, найдите элемент и перейдите в начало? Как вы используете gzip в .htaccess или php.ini? Как подсчитать количество просмотров youtube видео с помощью API YouTube Analytics v3? Как использовать Идентификатор страницы в Opencart Согласование множественного появления одного и того же символа с preg_match Как проверить, является ли URL-адрес внешним URL-адресом или внутренним URL-адресом с помощью PHP? Использование Zend Service Amazon Нужна помощь в преобразовании формулы PV в PHP Как получить видеоролик из видео Dailymotion с идентификатора видео этого видео, как на YouTube? Легкий способ применения функции к массиву

PHP preg_match для поиска и поиска динамического URL-адреса из HTML-страниц

Мне нужна помощь с REGEX, которая найдет ссылку, которая поставляется в разных форматах, основываясь на том, как она была вставлена ​​на страницу HTML.

Я могу читать страницы на PHP. Просто не в состоянии правильно REGEX, который найдет URL и изолирует их.

У меня есть несколько примеров того, как они вставляются. Где иногда они являются текстовыми ссылками, некоторые из них обернуты вокруг них. Есть даже странный случай, когда текст, который не является частью ссылки, вставлен без интервала.

И Идентификатор статьи, и Ключ Статьи никогда не совпадают. Ключ статьи, однако, всегда заканчивается числовым. Если это возможно, я обязательно смогу воспользоваться помощью. благодаря

Here are a few examples. http://www.example.com/ArticleDetails.aspx?ArticleID=3D10045411&AidKey=3D-2086622941 http://example.com/ArticleDetails.aspx?ArticleID=10919199&AidKey=1956996566 <a href="http://www.example.com/ArticleDetails.aspx?ArticleID=10773616&amp;AidKey=1998267392">http://www.example.com/ArticleDetails.aspx?ArticleID=10773616&amp;AidKey=1998267392</a> <a href="http://www.example.com/ArticleDetails.aspx?ArticleID=10773616&amp;AidKey=1998267392">This is a link description</a> http://example.com/ArticleDetails.aspx?ArticleID=10975137&AidKey=701321736this is not part of the url. 

В конце концов, я просто ищу URL.

 http://example.com/ArticleDetails.aspx?ArticleID=10975137&AidKey=701321736 

Это регулярное выражение работает для меня:

 /http:\/\/(www\.)?example\.com\/ArticleDetails.aspx\?ArticleID=(.*?)(\&|\&amp;)AidKey=([\d\w-]*)/g 

UPDATE: я добавил a \d в конец регулярного выражения.

 /http:\/\/(www\.)?example\.com\/ArticleDetails.aspx\?ArticleID=(.*?)(\&|\&amp;)AidKey=([\d\w-]*)\d/g 

Чтобы использовать его в PHP, вам нужно /.../msi

Пример PHP в действии: http://ideone.com/N0TKM

НЕ ИСПОЛЬЗУЙТЕ РЕЖИМ! Используйте синтаксический анализатор XML …

 $dom = DOMDocument::loadHTMLFile($pathToFile); $finder = new DOMXpath($dom); $anchors = $finder->query('//a[@href]'); foreach($anchors as $anchor){ $href = $anchor->getAttribute('href'); if(preg_match($regexToMatchUrls, $href)){ //do stuff } } 

Таким образом, $regexToMatchUrls будет регулярным выражением jsut для соответствия URL-адресам, которые вы ищете … ни один из html, который намного проще – тогда вы можете действовать, когда происходит совпадение.