У меня есть веб-сайт, который содержит много разных страниц продуктов, и каждая страница имеет определенное количество изображений в одном формате на всех страницах. Я хочу, чтобы у меня была возможность экранировать ломать URL каждой страницы, чтобы я мог получить URL-адрес каждого изображения с каждой страницы. Идея состоит в том, чтобы создать галерею для каждой страницы, состоящей из изображений с горячей ссылкой.
Я знаю, что это можно сделать в php, но я не уверен, как отказаться от страницы для нескольких ссылок. Есть идеи?
Я бы рекомендовал использовать DOM-парсер, например, собственный DOMDocument PHP . Пример:
$page = file_get_contents('http://example.com/images.php'); $doc = new DOMDocument(); $doc->loadHTML($page); $images = $doc->getElementsByTagName('img'); foreach($images as $image) { echo $image->getAttribute('src') . '<br />'; }
Вы можете использовать регулярное выражение (regex), чтобы пройти через источник страницы и проанализировать все теги IMG.
Это регулярное выражение выполнит работу довольно хорошо: <img[^>]+src="(.*?)"
Как это работает?
// <img[^>]+src="(.*?)" // // Match the characters "<img" literally «<img» // Match any character that is not a ">" «[^>]+» // Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+» // Match the characters "src="" literally «src="» // Match the regular expression below and capture its match into backreference number 1 «(.*?)» // Match any single character that is not a line break character «.*?» // Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?» // Match the character """ literally «"»
Пример кода PHP:
preg_match_all('/<img[^>]+src="(.*?)"/i', $subject, $result, PREG_PATTERN_ORDER); for ($i = 0; $i < count($result[0]); $i++) { // image URL is in $result[0][$i]; }
Вам нужно будет немного поработать над решением таких проблем, как относительные URL-адреса.
Мне очень нравится PHP Simple HTML DOM Parser для таких вещей. Пример захвата изображений находится прямо на первой странице:
// Create DOM from URL or file $html = file_get_html('http://www.google.com/'); // Find all images foreach($html->find('img') as $element) echo $element->src . '<br>';
Вы можете это отбросить страницы.
http://simplehtmldom.sourceforge.net/
но для этого требуется PHP 5+.