Вырезаем изображения

[php] Get img src with PHP

I would like to get the SRC attribute into a variable in this example:

  

So for example — I would like to get a variable $foo = «/images/image.jpg» . Important! The src attribute will be dynamic, so it mustn’t be hardcoded. Is there any quick and easy way to do this?

EDIT: The image will be a part of a huge string that is basically the content of a news story. So the image is just a part of that.

EDIT2: There will be more images in this string, and I would only want to get the src of the first one. Is this possible?

This question is related to php html image variables src

The answer is

Use a HTML parser like DOMDocument and then evaluate the value you’re looking for with DOMXpath :

$html = ' '; $doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $src = $xpath->evaluate("string(//img/@src)"); # "/images/image.jpg" 

Or for those who really need to save space:

$xpath = new DOMXPath(@DOMDocument::loadHTML($html)); $src = $xpath->evaluate("string(//img/@src)"); 

And for the one-liners out there:

$src = (string) reset(simplexml_import_dom(DOMDocument::loadHTML($html))->xpath("//img/@src")); 

You would be better off using a DOM parser for this kind of HTML parsing. Consider this code:

$html = ' '; $doc = new DOMDocument(); libxml_use_internal_errors(true); $doc->loadHTML($html); // loads your html $xpath = new DOMXPath($doc); $nodelist = $xpath->query("//img"); // find your image $node = $nodelist->item(0); // gets the 1st image $value = $node->attributes->getNamedItem('src')->nodeValue; echo "src=$value\n"; // prints src of image 

I have done that the more simple way, not as clean as it should be but it was a quick hack

$htmlContent = file_get_contents('pageURL'); // read all image tags into an array preg_match_all('/]+>/i',$htmlContent, $imgTags); for ($i = 0; $i < count($imgTags[0]); $i++) < // get the source string preg_match('/src="https://syntaxfix.com/question/27269/([%5E"]+)/i',$imgTags[0][$i], $imgage); // remove opening 'src=' tag, can`t get the regex right $origImageSrc[] = str_ireplace( 'src qstn_body">  

I know people say you shouldn't use regular expressions to parse HTML, but in this case I find it perfectly fine.

$string = ' '; preg_match('/ 

NOTE: You should use an HTML Parser like DOMDocument and NOT a regex.

$str = 'Image'; preg_match('/(src=["\'](.*?)["\'])/', $str, $match); //find src="https://syntaxfix.com/question/27269/X" or src='X' $split = preg_split('/["\']/', $match[0]); // split by quotes $src = $split[1]; // X between quotes echo $src; 

Other regexp's can be used to determine if the pulled src tag is a picture like so:

if(preg_match('/([jpg]$)|([gif]$)|([jpeg]$)|([bmp]$)|([png]$)/', $src) == 1) < //its an image >

There could be two easy solutions:

  1. HTML it self is an xml so you can use any XML parsing method if u load the tag as XML and get its attribute tottally dynamically even dom data attribute (like data-time or anything).
  2. Use any html parser for php like http://mbe.ro/2009/06/21/php-html-to-array-working-one/ or php parse html to array Google this

Источник

Как извлечь img src, title и alt из html с помощью php?

Я хотел бы создать страницу, где все изображения, которые находятся на моем сайте, перечислены с заголовком и альтернативным представлением. Я уже написал мне небольшую программу для поиска и загрузки всех HTML файлов, но теперь я застрял в том, как извлечь src , title и alt из этого HTML:

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

21 ответ

EDIT: теперь, когда я лучше знаю

Использование regexp для решения этой проблемы - плохая идея и, вероятно, приведет к недостижимому и ненадежному коду. Лучше использовать парсер HTML.

Решение С regexp

В этом случае лучше разбить процесс на две части:

Я предполагаю, что ваш документ не является строгим xHTML, поэтому вы не можете использовать синтаксический анализатор XML. НАПРИМЕР. с этим исходным кодом веб-страницы:

/* preg_match_all match the regexp in all the $html string and output everything as an array in $result. "i" option is used to make it case insensitive */ preg_match_all('/]+>/i',$html, $result); print_r($result); Array ( [0] => Array ( [0] =>  [1] => vote up[2] => vote down[3] => gravatar image[4] => vote up[. ] ) ) 

Затем мы получаем все атрибуты тега img с помощью цикла:

$img = array(); foreach( $result as $img_tag) < preg_match_all('/(alt|title|src)=("[^"]*")/i',$img_tag, $img[$img_tag]); >print_r($img); Array ( [ ] => Array ( [0] => Array ( [0] => src="/Content/Img/stackoverflow-logo-250.png" [1] => alt="logo link to homepage" ) [1] => Array ( [0] => src [1] => alt ) [2] => Array ( [0] => "/Content/Img/stackoverflow-logo-250.png" [1] => "logo link to homepage" ) ) [vote up] => Array ( [0] => Array ( [0] => src="https://overcoder.net/content/img/vote-arrow-up.png" [1] => alt="vote up" [2] => title="This was helpful (click again to undo)" ) [1] => Array ( [0] => src [1] => alt [2] => title ) [2] => Array ( [0] => "/content/img/vote-arrow-up.png" [1] => "vote up" [2] => "This was helpful (click again to undo)" ) ) [vote down] => Array ( [0] => Array ( [0] => src="https://overcoder.net/content/img/vote-arrow-down.png" [1] => alt="vote down" [2] => title="This was not helpful (click again to undo)" ) [1] => Array ( [0] => src [1] => alt [2] => title ) [2] => Array ( [0] => "/content/img/vote-arrow-down.png" [1] => "vote down" [2] => "This was not helpful (click again to undo)" ) ) [gravatar image] => Array ( [0] => Array ( [0] => src="http://www.gravatar.com/avatar/df299babc56f0a79678e567e87a09c31?s=32&d=identicon&r=PG" [1] => alt="gravatar image" ) [1] => Array ( [0] => src [1] => alt ) [2] => Array ( [0] => "http://www.gravatar.com/avatar/df299babc56f0a79678e567e87a09c31?s=32&d=identicon&r=PG" [1] => "gravatar image" ) ) [..] ) ) 

Regexps имеют интенсивность процессора, поэтому вам может понадобиться кэшировать эту страницу. Если у вас нет системы кэширования, вы можете настроить свою собственную, используя ob_start и загрузку/сохранение из текстового файла.

Как работает этот материал?

Сначала мы используем preg_ match_ all, функцию, которая получает каждую строку, соответствующую шаблону, и выводит ее в третий параметр.

Мы применяем его на всех веб-страницах html. Его можно прочитать, поскольку каждая строка, начинающаяся с " " char и заканчивается нa > .

Мы применяем его последовательно на каждом теге img. Он может быть прочитан как каждая строка, начинающаяся с "alt", "title" или "src", затем "=", затем "," куча вещей, которые не являются "и заканчивается символом" ", Изолировать подстроки между().

Наконец, каждый раз, когда вы хотите иметь дело с регулярными выражениями, удобно иметь хорошие инструменты для быстрого тестирования. Проверьте этот онлайн-тестер регулярных выражений.

EDIT: ответьте на первый комментарий.

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

Ну, если вы используете только ', просто замените все на.

Если вы смешиваете оба. Сначала вы должны пощекотать себя:-), затем попытайтесь использовать ( "|" ) вместо или "и [^ ø], чтобы заменить [^" ].

Единственная проблема - одиночные кавычки: не будет работать, регулярное выражение ожидает "все время"

Я НЕ рекомендовал бы прокручивать вниз (хорошо, сделайте прокрутку, чтобы проверить это): хотя код кажется простым и поэтому заманчивым для использования людьми, DOMDocument имеет слишком много накладных расходов, когда вы просто хотите получить атрибуты из тега. ..

Это решение хорошо, если: вы не знаете тег для анализа html, у вас есть 1 строка html и вам нужно 1-2 атрибута. Загрузка DOMDoc требует много памяти, что бесполезно, если вы не анализируете весь документ.

Источник

Найти img src (PHP)

Например у нас есть файл test.html и нужно найти все атрибуты src у изображений.

test.html

Литр свежевыжатого апельсинового сока Соковыжималка Выжимаем сок Апельсиновый сок Векторный круг в выделение Параметры наложения (Blending options) Круг с рамкой (PhotoShop) Фотошоп. Как нарисовать круг. Выпадающее меню (JavaScript) Drop Down Menu (JavaScript) Гаечный ключ → Параметры (Google Chrome) Параметры безопасности. Включение JavaScript. Настройки содержания

preg_image.php

Скрипт preg_image.php будет брать текст файла test.html и искать изображения.

]*>/i', $content, $images, PREG_SET_ORDER); foreach ($images as $image) < echo $image[1] . '
'; >

Результат

В результате выполнения скрипта preg_images.php , на экран будет выдан следующий результат:

Категории

Читайте также

  • Удалить все атрибуты кроме (PHP)
  • Проверка электронной почты (PHP)
  • Удалить двойные пробелы (PHP)
  • Удалить все атрибуты у тегов (PHP)
  • Вырезать все кроме цифр (PHP)
  • preg_replace и русские буквы
  • Поменять img.src (jQuery)
  • Как поменять изображение (JavaScript)
  • Найти и удалить элемент массива (PHP)
  • Наложение логотипа (PHP)
  • Удалить все теги (PHP)
  • Узнать цвет пикселя изображения (PHP)

Источник

Получить URL (src) изображения по ID

Здравствуйте!
Подскажите пожалуйста решение, сколько не искал, так и не смог найти того что мне нужно.

В общем, есть код в котором различные теги, ссылки и изображения. Мне нужно вытащить из общего кода только URL на определенное изображение. Например по ID, есть код картинки:

img src="images/photo.jpg" id="mainimg">

Получить src изображения
Здравствуйте. Есть такой код: var poster = HD.DocumentNode.SelectSingleNode("//div/img/@src");.

Регулярные выражения - вытащить src из заданного url страницы
Приветствую! Подскажите пожалуста как решить заданную задачу: имеется адрес страницы(сервер.

Замена изображения src в css
Здравствуйте. Мне нужно заменить одни шахматные фигуры на другие на одном сайте через расширение.

var mainimg = document.getElementById("mainimg"); var src = mainimg.getAttribute("src");

ЦитатаСообщение от Пифагор Посмотреть сообщение

var mainimg = document.getElementById("mainimg"); var src = mainimg.getAttribute("src");
$img='; if (preg_match_all('/, $img, $m)) { echo $m[1][0]; }

Лучший ответ

Сообщение было отмечено Kerry_Jr как решение

Решение

Да, решение "идеальное", а главное "удобное"
Не лучше ли воспользоваться встроенными функциями? Для этого их и создали..

$htmlDoc = new DOMDocument(); $htmlDoc->loadHTMLFile('имя файл'); //поправил $searchNode = $htmlDoc->getElementById('mainimg'); $valueSrc = $searchNode->getAttribute('src');

Эксперт PHP

ЦитатаСообщение от Пифагор Посмотреть сообщение

$htmlDoc->loadHTMLFile('имя файла');

Как указать src изображения из переменной во Vue.js?
Здраствуйте. Я пытаюсь вывести значение в тег img с переменной vue Вот код: <template> .

Src получить корневой элемент
При запросе: alert(document.getElementById("ibbunner").src); Получаю результат.

Как из asp получить полный URL и часть URL от вопросительного знака?
Господа подскажите как из asp получить полный URL и часть URL от вопросительного знака. На.

Как получить часть url return url
как получить часть url return url Привет всем! Вопрос от человека далекого от javaScript. у меня.

На основе исходного изображения (A) и отфильтрованного фильтром гаусса (B), получить изображения
Подскажите ,запутался немного в bmp файлах. Использовать GraphABS запрещено! На основе исходного.

Источник

Читайте также:  Java tar gz install ubuntu
Оцените статью