Вы можете использовать preg_match_all
и тщательно построенный шаблон. Эта измененная версия вашего кода должна предоставить вам список всех URL-адресов изображений в HTML, которые вы получите:
$url = 'http://site1.com/index.php';
$data = ["send" => "Test"];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$matches = NULL;
$pattern = '/<img[^>]+src=\"([^"]+)"[^>]*>/';
$img_count = preg_match_all($pattern, $response, $matches);
var_dump($matches[1]);
Если вы хотите получить все ссылки вместо этого, вы можете изменить $pattern
к этому:
$pattern = '/<a[^>]+href=\"([^"]+)"[^>]*>/';
Я проверил этот код на html файле, который выглядит так:
<html>
<body>
<div><img src="WANT-THIS"></div>
</body>
</html>
И вывод такой:
array(1) {
[0]=>
string(9) "WANT-THIS"
}
РЕДАКТИРОВАТЬ 2: В ответ на дополнительные вопросы от OP, я также попробовал сценарий для этого html файла:
<html>
<body>
<div1>CODE</div><div2>CODE</div><div3>CODE</div><div4>CODE</div><div5>CODE</div><div6>CODE</div><img src="IMAGE">
</body>
</html>
И он дает такой результат:
array(1) {
[0]=>
string(5) "IMAGE"
}
Если это не решит вашу проблему, вам нужно будет предоставить дополнительную информацию - либо пример URL, который вы выбираете, некоторые HTML, которые вы хотите найти, или дополнительную информацию о том, как вы могли бы знать какое изображение в HTML вы хотите получить - есть ли у него какой-то особый идентификатор? Это всегда первое изображение? Второе изображение? Есть ли какие-либо характеристики c, по которым мы знаем, какое изображение захватить?