Мне нужна помощь с 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&AidKey=1998267392">http://www.example.com/ArticleDetails.aspx?ArticleID=10773616&AidKey=1998267392</a> <a href="http://www.example.com/ArticleDetails.aspx?ArticleID=10773616&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=(.*?)(\&|\&)AidKey=([\d\w-]*)/g
UPDATE: я добавил a \d
в конец регулярного выражения.
/http:\/\/(www\.)?example\.com\/ArticleDetails.aspx\?ArticleID=(.*?)(\&|\&)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, который намного проще – тогда вы можете действовать, когда происходит совпадение.