@midarovrk

Как отобразить и обрезать кусок кода с сайта?

Здравствуйте.
Помогите, как из имеющегося кода на сайте обрезать всё лишнее и получить нужную информацию?
На сайте есть вот такой код:

<div class="ForRead">
<div class="navigation">
<a href="/online-reading/comicsonline/batman2016vol3/batman2016vol3042" class="leftC"></a>
<select class="C" onchange="window.location='/online-reading/comicsonline/batman2016vol3/batman2016vol3043/'+this.value">
<option value="1" selected="">-1-</option><option value="2" >-2-</option><option value="3" >-3-</option><option value="4" >-4-</option><option value="5" >-5-</option><option value="6" >-6-</option><option value="7" >-7-</option><option value="8" >-8-</option><option value="9" >-9-</option><option value="10" >-10-</option><option value="11" >-11-</option><option value="12" >-12-</option><option value="13" >-13-</option><option value="14" >-14-</option><option value="15" >-15-</option><option value="16" >-16-</option><option value="17" >-17-</option><option value="18" >-18-</option><option value="19" >-19-</option><option value="20" >-20-</option>
</select>
<a href="/online-reading/comicsonline/batman2016vol3/batman2016vol3043/2" class="rightC"></a>
</div> 
<a href="http://comicsonline.ru/1/batman2016vol3/043/1.png" rel="shadowbox"><b>Увеличить</b></a>	    		
<a href="/online-reading/comicsonline/batman2016vol3/batman2016vol3043/2"><img src="http://comicsonline.ru/1/batman2016vol3/043/1.png?st=&e="
        		alt="Комиксы Онлайн - Бэтмен том 3 - # 43 - Страница №1 - Batman vol 3 - # 43"
        		title="Комиксы Онлайн - Бэтмен том 3 - # 43 - Страница №1 - Batman vol 3 - # 43" ></a>
</div>


Из этого кода нужно только отобразить url из img вот этот
http://comicsonline.ru/1/batman2016vol3/043/1.png?st=&e=

И цифру из самого последнего тега option это цифра 20

Т.е. чтобы получилось вот так:
http://comicsonline.ru/1/batman2016vol3/043/1.png?st=&e=
20


Я только смог отобразить весь select из div блока, вот так:
<?
$text = file_get_contents("http://site.com/index.php");
$data = array();

preg_match("/<div class=\"navigation\">(.*)<\/div>/Uis", $text, $out);

print "$out[1]";
?>


Но получить только последнюю цифру не получается, как и url из img.
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 3
@Yan-s
Не пишите регулярки для парсинга HTML, для этого есть более удобные решения, например
https://github.com/Imangazaliev/DiDOM
https://github.com/paquettg/php-html-parser
Ответ написан
Stalker_RED
@Stalker_RED
Можно использовать Zend\Dom\Query
use Zend\Dom\Query;
$dom = new Query($html);

$src = $dom->execute('img')->current()->getAttribute('src');
$opt = $dom->execute('select option[last()]')->current()->getAttribute('value'); 

echo $src . PHP_EOL . $opt;


Из более комплексного - можно взять Guzzle, там сразу http клиент в комплекте.
Ответ написан
proudmore
@proudmore
"Даже Джон Скит не может парсить html регулярками" :)))
L5KvMJ3ExMg.jpg
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы