Получить только путь

342
02 января 2018, 16:18

Есть строка <img src="images/stories/2017/12/2-51.jpg">

как средствами php вырезать только путь src что бы получилось

images/stories/2017/12/2-51.jpg
Answer 1

str_replace с передачей массива вырезаемых элементов спокойно может подойти:

$inputString = '<img src="images/stories/2017/12/2-51.jpg">';
$cuttingData = array('<img src="', '">');
$result = str_replace($cuttingData, '', $inputString);
echo $result;

с использованием Simple HTML DOM Parser:

$html = str_get_html('<img src="images/stories/2017/12/2-51.jpg">');
// Find all images
foreach($html->find("img") as $element) {
    echo $element->src , "<br>"; // выведет images/stories/2017/12/2-51.jpg
}

посмотреть можно на http://phpfiddle.org/main/code/jkmb-miie

$html = str_get_html('<div><img src="images/stories/2017/12/2-51.jpg"><img src="images/stories/2015/10/2-52.jpg"><img src="images/stories/2016/12/2-53.jpg"></div>');
// Find all images
foreach($html->find("img") as $element) {
    echo $element->src , "<br>";
}
// Выведет 
images/stories/2017/12/2-51.jpg
images/stories/2015/10/2-52.jpg
images/stories/2016/12/2-53.jpg

посмотреть можно на http://phpfiddle.org/main/code/iws5-2vex

C помощью DOMDocument (уже есть нативно в PHP)

$dom = new DOMDocument;
$dom->loadHTML('<img src="images/stories/2017/12/2-51.jpg">');
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
    echo $image->getAttribute('src').'<br/>';
}

-

$dom = new DOMDocument;
$dom->loadHTML('<div><img src="images/stories/2017/12/2-51.jpg"><img src="images/stories/2015/10/2-52.jpg"><img src="images/stories/2016/12/2-53.jpg"></div>');
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
    echo $image->getAttribute('src').'<br/>';
}
// Выведет 
images/stories/2017/12/2-51.jpg
images/stories/2015/10/2-52.jpg
images/stories/2016/12/2-53.jpg
Answer 2

Как вариант так:

$html = '<img src="images/stories/2017/12/2-51.jpg">';
$src = preg_replace('/.*<img[^>]+src="([^"]+)".*/', '$1', $html);
echo $src;
Answer 3

Или с помощью preg_match_all()

$str = '<img src="images/stories/2017/12/1-51.jpg"> текст <img src="images/stories/2017/12/2-51.jpg">';
preg_match_all('~(?<=src=").+?(?=")~', $str, $a);
var_dump($a[0]);
READ ALSO
Браузер все равно кеширует данные файла

Браузер все равно кеширует данные файла

У меня есть файл JSON, который нельзя кешироватьЯ его запрашиваю из файла history

264
Работа с Amazon Api

Работа с Amazon Api

ЗдраствутеНужно сформировать конкретный запрос к апи амазона

256