Получение только ОДНОГО URL-адреса из атрибута «data-srcset» с PHP Simple HTML DOM - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь очистить URL-адрес изображения с внешнего веб-сайта, чтобы использовать его в качестве атрибута src в элементе изображения на моем собственном веб-сайте.

Проблема заключается в том, что на внешнем веб-сайте изображениеURL-адрес вложен в элемент изображения, в элементе источника, где он затем повторяется в атрибуте «data-srcset» в разных размерах. Пример:

<picture><source data-srcset="https://imageurl.com 640w, https://imageurl.com 720w, https://imageurl.com 860w"></picture>

Я могу указать целевой элемент с помощью PHP Simple HTML DOM find () и сохранить его в переменной. Эта переменная называется $ imageselector. Я могу дополнительно нацелиться на фактический атрибут, создав переменную для data-srcset следующим образом:

$srcset = 'data-srcset';

Мой окончательный вывод будет выглядеть следующим образом:

<?php echo $imageselector->$srcset; ?>

Это, однако,пытается напечатать все внутри атрибута (конечно), что не очень полезно для меня.

У кого-нибудь есть идеи, как получить, скажем, первый URL-адрес в атрибуте?

(Добавление максимальной длины тоже не принесет пользы, поскольку длина URL может измениться в любой момент)

1 Ответ

0 голосов
/ 17 октября 2019

Вы можете взять $imageselector->$srcset, разбить его содержимое на массив и при необходимости отфильтровать.

$longString = $imageselector->$srcset;
$pics = explode(",", $longString)

Теперь у вас есть массив, содержащий такие вещи, как "https://imageurl.com 640w", так что теперь вы можете взять [1]например.

$toUse = explode(" ", $pics[1]);
$toUse = $toUse[0]; //to get the useful part of the item

Кроме того, вы также можете предварительно фильтровать весь массив

function getLink($string) {
    return substr($string, 0, strpos($string, " "));
}
//Once you already have the exploded string
$pics = array_filter($pics, "getLink");
...