Papkun

Получить ссылку изображения php

БлогNot. PHP: собираем ссылки на картинки рекурсивно

PHP: собираем ссылки на картинки рекурсивно

Построить на PHP рекурсивное дерево папок сервера легко. Намного ли усложняется задача, если нужно собрать из вложенных папок и вывести в браузер (или ещё куда-то) определённые типы файлов, например, наши любимые картинки, на которые мы хотим сослаться и куда-то вставить их адреса?

Так как браузеры уже умеют копировать ссылки на изображения, нам достаточно получить на PHP рекурсивный список файлов из нужной папки и вывести их на страницу.

Показанное ниже решение подойдёт только для относительно небольших объёмов и линейных размеров картинок, например, для вашей коллекции смайликов или иконок. Так как скрипт для рекурсивного сбора и отображения картинок будет рекурсивно лазить по папкам, так и назовём его — «Папкун» 🙂

Представим, что у нас есть папка со скриптом на хосте и несколько вложенных папок, возможно, тоже содержащих картинки:

фрагмент дерева папок локального хоста

фрагмент дерева папок локального хоста

При этом, среди файлов есть «посторонние», одна папка (с именем 1 ) пуста, а папка img содержит ещё 2 вложенных.

Читайте также:  Конвертация в питоне это

Для решения задачи можно использовать функцию glob, обернув её в функцию, модифицирующую нужный шаблон поиска файлов, например, так:

 return $files; > $cdir = rglob ("./*.",GLOB_BRACE); //эта маска - не регулярка! foreach ($cdir as $value) < $alt = str_replace("\\",'/',"http://".$_SERVER['HTTP_HOST']. substr(getcwd(),strlen($_SERVER['DOCUMENT_ROOT']))).ltrim($value,'.'); //всплывающая на картинке подсказка - полный URL этой картинки echo "\n".''.$alt.''; > ?>

Код показан без обрамления HTML. Здесь мы получим и «вывалим» в браузер массив картинок указанных в маске вызова типов файлов из всех вложенных папок, начиная с папки расположения скрипта. Ссылки на файлы делаются абсолютными и они же служат всплывающими подсказками при наведении мыши на картинку (атрибут title тега ).

вывод скрипта 1

вывод скрипта 1

Единственное неудобство, которое я вижу в решении — файлы представлены одним списком, без соблюдения структуры папок.

Чтобы разрешить проблему, придётся сделать чуть больше телодвижений, в частности, использовать массив массивов для сохранения информации о папках, в которых находились исходные файлы. Приведём соответствующий код, добавив к нему небольшое обрамление HTML.

     html, body  

Нажмите правой кнопкой мыши на нужной картинке и скопируйте ссылку на неё. Нужный пункт меню может называться "Копировать URL картинки" (Chrome), "Копировать ссылку на изображение" (Firefox), "Копировать адрес изображения" (Safari) и т.д. Затем вставьте адрес картинки там, где можно добавлять ссылки на внешние изображения.

else if (preg_match("/^.*\.(jpg|jpeg|png|gif)$/i",$value)) < //не папка, и имя соответствует маске $result[] = $dir.'/'.$value; >> return $result; > function filesToList ($files) < $s = ''; foreach ($files as $path =>$file) < if (is_array($files[$path])) //путь к папке будет заголовком $s .= "\n".'

'.$path.'

'.filesToList ($files[$path]); else < $alt = str_replace("\\",'/',"http://".$_SERVER['HTTP_HOST']. substr(getcwd(),strlen($_SERVER['DOCUMENT_ROOT']))).ltrim($files[$path],'.'); $s .= "\n".''.$alt.''; > > return $s."\n"; > $files = dirToArray ('.'); asort ($files); //файлы текущей папки должны оказаться впереди echo filesToList ($files); ?>

вывод скрипта 2

вывод скрипта 2

Мне кажется, так гораздо удобнее и видно, какую пустую папку надо удалить с сервера 🙂

Обратите внимание, что здесь происходит всего одно обращение к серверу и не нужен JQuery или подобный AJAX. Ну а дальше можно сколько угодно усложнять себе задачу — например, сделать выбор папки из списка, подгружать данные через AJAX или из сформированного яваскриптом массива имён файлов и т.п.

Скрипты в работе: списком, по папкам, осторожно, там одна папка с иконками 18+ 🙂

01.03.2018, 10:56 [4026 просмотров]

Источник

Как получить ПРЯМУЮ ссылку на изображение?

Задумал написать фотохостинг. Что-то супер крутое не надо, самые алиментарные функции.
Чисто для себя. Будет дома стоять отдельный сервер с хостингом.
Тут как бы доступ к просмотру есть, но не к загрузке, то есть, чтобы только я мог загружать изображения.

Я знаю, что есть готовые скрипты, но мне бы хотелось написать самому. Понять как это всё работает.

1) загрузка файла на сервер. Сейчас у меня OpenServer.
2) Вывод в браузер, желательно с доп инфой, дата загрузки, время, размер, формат.
3) Собственно, получение ссылки на файл. Каким образом?

1 2 3 4 5 6 7 8 9 10 11 12
html> head> /title>/title> /head> body> h1>Загрузка файлов на сервер/h1> form action="upload.php" enctype="multipart/form-data" method= "post"> input type="file" name="img"> input type="submit" value="Загрузить"> /form> /body> /html>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
 if ($_FILES['img']['size']> 10485760)die("Размер файла первышает 10 Мб. Вернуться на страницу загрузки."); //Проверка размера файла $types = array('image/png', 'image/jpeg'); //Проверка расширения файла if (!in_array($_FILES['img']['type'], $types)){ header('Content-Type: text/html; charset=utf-8'); echo "Файл не являетсчя изображением. Вернуться на страницу загрузки"; exit(); } $temp=$_FILES['img']['tmp_name']; //Путь к файлу $name=$_FILES['img']['name']; //Имя файла move_uploaded_file($temp, "Images/".$name); //Загрузка файла include_once 'Image.php';
1 2 3 4 5 6 7 8 9 10 11 12 13 14
 if ($_FILES['img']['type'] == 'image/png'){ $Image= imagecreatefrompng("Images/".$name); header("Content-Type:image/png"); imagepng($Image,NULL,0); } else $Image= imagecreatefromjpeg("Images/".$name); header("Content-Type:image/jpeg"); imagejpeg($Image,NULL,100); ?>

Форма, загрузка в папку «Images», вывод с помощью библиотеки «GD».
Пока, конечно, без доп инфы и прочего. Скрипт загружает файлы в папку и открывает, но открывает как «upload.php», то есть отдельная страница, и страница с формой исчезает.

Вообще, есть литература по теме? Как написать фотохостинг, ну или что-то типа как работать с изображениями, именного готовыми, а не создавать новые, что предлагает обычно поисковик.

По факту, нужно получить элементарные функции: когда картинка загружена, показать её на той же странице с информацией и вывести прямую ссылку, чтобы можно было использовать где-нибудь на форуме. Как на обычном фотохостнге: картинка появляется по центру, а снизу идет прямая ссылка и коды для форума. Желательно, конечно, еще ресайз реализовать.

Источник

Получить ссылку изображения php

В этом разделе помещены уроки по PHP скриптам, которые Вы сможете использовать на своих ресурсах.

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Совет: активация отображения всех ошибок в PHP

При поднятии PHP проекта на новом рабочем окружении могут возникнуть ошибки отображение которых изначально скрыто базовыми настройками. Это можно исправить, прописав несколько команд.

Источник

Получаем ссылки на картинки из тегов img src в тексте

Работая с каким либо проектом на PHP часто приходится сталкиваться с поиском картинок в тексте для дальнейшей работы с ними. Например, нам надо из html статьи вырезать все картинки и уменьшить их размер или сохранить на диск. Здесь я приведу вам пример как можно из массива текста получить ссылки на изображения.

Получаем все изображения в тексте:

preg_match_all('# #isU', $content, $match); //Проверяем данных и вытягиваем только ссылки на изображения if (strlen($imgosn)1) { preg_match_all('# #isU', $content, $match); @$imagesn = $match[1][0]; } //если нужен полный html-код @$imagesn = $match[0][0]; //Если нужны все теги img src из текста $regex = "/]+src\s*=\s*[\"']\/?([^\"']+)[\"'][^>]*\>/"; preg_match ($regex, $text, $matches); $images = (count($matches)) ? $matches : array(); 

Если нужно удалить из текста первый тег img или любое другое количество

Популярное

  • Установка и настройка reCAPTCHA 2.0 от Google (90996) 14-01-2017 21:15:18 В этой статье рассмотрим установку и настройку новой версии reCaptcha API от Google в которой обновлен.
  • Установка и настройка Google reCAPTCHA 3 (53259) 07-02-2019 17:15:37 Google reCAPTCHA стала одним из самых популярных решений, когда речь идет о предотвращении отправки.
  • Слайдер изображений Owl Carousel 2 (26292) 18-06-2016 14:12:42 В этой статье мы рассмотрим настройку и установку новой версии адаптивного слайдера изображений Owl Carousel.
  • Настройка, установка Invisible reCAPTCHA. Примеры. (14830) 20-03-2018 16:08:25 Invisible reCAPTCHA защищает ваш сайт от спама и других видов автоматических злоупотреблений, например.
  • jQuery — Owl Carousel Slider (13547) 27-01-2016 19:21:47 Адаптивный слайдер изображений Owl Carousel Slider. Имеет достаточно большое количество настроек, прост в.

Источник

Как вытянуть из текста все src изображений на php?

slo_nik

Добрый день.
Можно использовать регулярные выражения или попробовать библиотеку для парсинга, например phpquery.
Регулярное выражение может выглядеть так.

$content = file_get_contents('img.php'); // Присваеваем переменной $content html страницу preg_match_all('/src=\"(.*?)\"/', $content, $array); // выбираем из переменной $content все src foreach ($array[1] as $item)< var_dump($item); // выводим чистые ссылки картинок >

mrKorg

0
«src https://nailsoftheday.com/upload/_images/images/26.jpg» rel=»nofollow» target=»_blank»>https://nailsoftheday.com/upload/_images/images/26.jpg»»
«src https://nailsoftheday.com/upload/_images/images/placeholder—small.jpg» rel=»nofollow» target=»_blank»>https://nailsoftheday.com/upload/_images/images/pl. «»
«src https://nailsoftheday.com/upload/_images/images/placeholder-3.jpg» rel=»nofollow» target=»_blank»>https://nailsoftheday.com/upload/_images/images/pl. «»

mrKorg

preg_match_all('/src=\"(.*?)\"/', $content, $array)

Войдите, чтобы написать ответ

Как отключить пагинацию в кастомных шаблонах категорий товаров?

Источник

Оцените статью