извлечение ссылки из строки, содержащей html и javascript

У меня есть строка, которая содержит следующее:

<img data-bind="defaultSrc: {srcDesktop: 'http://desktoplink', srcMobile: 'http://mobilelink', fallback: 'http://baseurl'}" >

Я пытаюсь извлечь srcDesktop содержится внутри строки. Я хочу, чтобы мой окончательный результат дал мне ссылку http://desktoplink, Каков наилучший способ достичь этого, кроме str_replace? У меня есть набор данных, который содержит эти строки, поэтому я ищу формулу для извлечения его в php.

Вот как я это делал, но должен быть более эффективный способ:

$string = '<img data-bind="defaultSrc: {srcDesktop: \'http://desktoplink\', srcMobile: \'http://mobilelink\', fallback: \'http://baseurl\'}" >';
$test = explode(" ",$string);
echo "<br>".str_replace(",","",str_replace("'","",$test['3']));

0

Решение

Вы можете использовать preg_match

$string = '<img data-bind="defaultSrc: {srcDesktop: \'http://desktoplink\', srcMobile: \'http://mobilelink\', fallback: \'http://baseurl\'}" >';

preg_match('/.*\bsrcDesktop:\s*(?:\'|\")(.*?)(?:\'|\").*/i', $string, $matches);

if (isset($matches[1])) {
echo trim($matches[1]);
}
1

Другие решения

вы можете использовать DOMDocument и json_decode, чтобы получить это значение, если вы можете изменить код на код ниже (добавлено несколько ‘-signs):

$string = "<img data-bind=\"'defaultSrc': {'srcDesktop': 'http://desktoplink', 'srcMobile': 'http://mobilelink', 'fallback': 'http://baseurl'}\" >";
$doc = new DOMDocument();
$doc->loadHTML($string);
$data = str_replace('\'','"',$doc->getElementsByTagName('img')[0]->getAttribute('data-bind'));
$json = json_decode('{'.$data.'}');
var_dump($json->defaultSrc->srcDesktop);
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector