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

Найти 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)

Источник

проверка php, если img src это изображение

У меня есть этот код, который должен отображать изображение, если он получает один сгенерированный, или писать «нет изображения», если нет.

somescript.php — это локальный файл, который генерирует изображение, или die(); Проблемы:
file_exists всегда ничего не возвращает.
условие getimagesize всегда возвращает «не удалось открыть поток». У кого-нибудь есть идея, как заставить его работать?

находится ли somescript.php в том же каталоге, что и этот файл? Вы не дадите ему полный путь, так что иначе он его не найдет.

используйте код на стороне клиента, например, с помощью jQuery, чтобы получить изображение или представить пользователю «нет изображения». В противном случае somescript.php должен будет сгенерировать одно и то же изображение дважды .

Не зная, что делает somescript.php, я бы рекомендовал вернуть код состояния, указывающий, что изображение было найдено / создано. Затем вы можете просто проверить код состояния, чтобы определить успех / неудачу. Просто обратите внимание, если somescript.php существует, ваш тест всегда будет проходить. Вы проверяете, существует ли somescript.php, а не существует ли изображение.

Я думаю, что вы можете запустить каждый файл через GD, чтобы определить, являются ли они изображениями. и @WouterHuysentruit, код на стороне клиента может быть хорошей настройкой пользовательского интерфейса, но вы можете легко отключить JavaScript или даже написать свои собственные формы . так что ничего хорошего. Если вы не заботитесь о злонамеренных пользователях, однако . продолжайте 🙂

@WouterHuysentruit Я бы хотел избежать JS, так как изображение генерируется на сервере, а на сервере оно должно отображаться (не).

3 ответа

Так как кажется целесообразным только генерировать изображение один раз для каждого запроса, я бы обработал это на стороне клиента.

Вы можете получить изображение с помощью jQuery при загрузке документа и решить, показывать ли изображение или показывать «нет изображения».

Или вы можете сохранить тег img , но использовать javascript для обнаружения ошибок в изображении:

 
no image
document.getElementById("myimg").onerror = function()

Даже если я хотел избежать javascript, у меня не было другого выбора, кроме как принять этот ответ, потому что он работает только один. Спасибо @Wouter.

Попробуйте это вместо file_exists

$src = 'somescript.php'; $src_headers = @get_headers($src); if($file_headers[0] == 'HTTP/1.1 404 Not Found') < $exists = false; >else

Работает отлично. Вам нужно всего лишь изменить условие, так как в разных случаях ошибка может быть 404, 403 и т. Д. Отлично работает для меня в Facebook Graph API с запрещенными изображениями.

Если вы не передаете полномасштабный URL-адрес filexists() , он будет работать на пути локальной файловой системы, который не может иметь никакого отношения к URL-адресу изображения, которое вы передаете тегу , например

  • ваш скрипт /home/sites/example.com/html/foo/picture.php
  • ваши изображения живут в /home/sites/example.com/html/images/.
  • вы пытаетесь передать /images/foo.jpg в тег

Затем будут выполняться следующие поисковые запросы URL:

вы передаете file_exists(‘/images/foo.jpg’) : PHP проверит локальный системный путь /images/foo.jpg . Вы не используете свой сайт из корневого каталога сервера, поэтому это не удается.

вы пытаетесь file_exists(‘images/foo.jpg’) : PHP будет проверять /home/site/example.com/html/foo/images/foo.jpg — подкаталог каталога, из которого выполняется ваш скрипт. Также не существует, и вы получаете false.

Обычно вы не можете смешивать пути файловой системы и URL-пространства, как кажется. Два пространства связаны, но не связаны напрямую.

Я считаю, что это не мой случай. Somescript.php не возвращает путь, а целое изображение. И хотя somescript.php находится в том же каталоге, что и страница, с которой я его вызываю, src = «somescript.php» представляет этот файл в локальном каталоге.

Ещё вопросы

  • 0 Поиск MongoDB с использованием переменной, отправленной с клиента
  • 0 JQuery обход и поиск текстовых полей
  • 1 [Vue warn]: свойство или метод «v» не определен в экземпляре, но на него ссылаются во время рендеринга
  • 1 Реактивный род-андроид застрял с белым дисплеем на симуляторе андроид-студии с надписью «Загрузка из 10.0.2.2.8081»
  • 0 Проверка SimpleForm и Angular
  • 0 JQuery AJAX кнопку возврата, чтобы вернуться на страницу поиска с результатами поиска
  • 1 Uncaught Ошибка: process.binding не поддерживается (browserify + selenium-webdriver)
  • 0 Как представить данные двоичного массива байтов в C ++?
  • 1 Почему для запуска функции требуется первый двойной щелчок, а затем один щелчок?
  • 1 Как я могу использовать AddOrUpdate .NET ConcurrentDictionary с моим пользовательским POCO?
  • 0 Как получить значение флажка, который был проверен
  • 0 Как разместить фоновое изображение за набором радиокнопок
  • 1 Android-редактирование smali: младшие биты должны быть нулем
  • 0 jQuery: передача объединенного идентификатора в ситуацию, связанную с селектором
  • 1 WPF Получить выбранную строку на сетке данных из шаблона
  • 0 C ++ ошибка Valgrind
  • 1 Какова сложность времени для следующей программы?
  • 1 Громкость голоса, полученного с микрофона, произвольно уменьшается (Android, OpenSLES)
  • 0 Как использовать угловой контроллер JS дважды
  • 0 Попытка создать функцию, где я могу искать в моей базе данных и получать результаты поиска. ошибки
  • 0 хочу вставить в первый раз посещаемость не обновлять
  • 0 Вывод как изображение с использованием PHP
  • 0 Почему статическая переменная класса не может быть размещена в стеке?
  • 0 Что означает typedef cell (* proc_type) (const std :: vector &); делать?
  • 0 Перестала работать горизонтальная линия через заголовок заголовка
  • 0 Предотвращение атак RFI при использовании переменных URL
  • 1 Читать значения из узлов XML?
  • 0 JQuery Datatable Следующая кнопка работает неправильно
  • 0 как скрыть и показать опции выбора для другой панели выбора
  • 0 Функции Javascript не загружают данные при загрузке
  • 1 Возвращение массива двойных значений из строки
  • 0 IE слишком медленный при добавлении большого количества HTML в DOM через Javascript
  • 1 Оператор переключателя в Javascript
  • 0 Нет пробела между кнопками «на следующей строке»
  • 1 Объект не имеет атрибута — Имя переменной, совместно используемой классами
  • 1 Соглашение об именовании свойств навигации в Entity Framework
  • 1 Как переключать фрагменты, используя предыдущую и следующую кнопки?
  • 0 Отобразить проблемы встроенного блока
  • 1 Проблема Xamarin Forms CustomPicker
  • 1 Динамическое центрирование поисковой панели на основе размеров изображения
  • 1 Python re.findall возвращает только первый символ
  • 1 Как выбрать переменные в массиве (A) со значениями из переменной (B)
  • 1 Как добавить новый столбец в строку, содержащую определенное значение?
  • 0 Загрузка итога при загрузке формы
  • 0 PHP Echo не включает межстрочный интервал
  • 1 Как вызвать метод в другом классе из универсального метода?
  • 0 Как включить отображение Jquery Mobile — карты Google только при нажатии кнопки
  • 1 Добавить более одного видео
  • 1 java.io.NotSerializableException :: ObjectOutputStream: метод writeObject
  • 0 Заменить номер в RegEx на тот же номер

Источник

Include test.jpg

Появляется прямоугольничек с надписью «изображение», но само изображение не появляется. Получается, что пхп не может адекватно инклудировать картинку?

Warning: include(1) [function.include]: failed to open stream: No such file or directory in
Выдает вот такую ошибку Warning: include(1) : failed to open stream: No such file or directory.

Эксперт PHP

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

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

 echo ''; ?>
 echo ''; ?>

Jodah , по указанной ссылке — про скачку, а мне надо на экран

Добавлено через 1 минуту
Monster-95, а как мне переменную с адресом вставить?

 $img = ''; echo $img; ?>
 echo ''; ?>

Я тут подумал: в адресной строке браузера значится адрес скрипта test.php. Мож поэтому картинку не кажет?

nikipor,
1. Есть корневая папка на вашей локальной машине.
2. У вас обрабатывается php код
3. В корневой папке есть картинка с именем test.jpg
А теперь к примеру ваш сайт на локальной машине называется test.ruв ней к примеру есть картинка test.jpg Создаем файл test.php в той же папке что и наша картинка с содержанием

 echo ''; ?>

Вы всё описали абсолютно точно. Я проверил: другие картинки показывает, видимо, дело в том, что на адрес test.jpg стоит редирект на test.php

Добавлено через 49 минут
Блин, что делать? Я хотел средиректить на скрипт, произвести какие-то манипуляции с картинкой и выдать обратно. Но выдать обратно не выходит.

nikipor, Покажите весь код, ото я проверил создал ту же папку тот же файл и у меня все работает на ура

IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} (test.gif|test.jpg) RewriteRule ^(.*)$ /test3.php [R=301,L] IfModule>
 $uri = ($_SERVER['HTTP_REFERER']); $uri1 = substr($uri,1); header('Content-Type: image/jpeg'); header('Last-Modified: Mon, 19 Oct 2015 07:35:02 GMT'); header('ETag: "6300000003c9f1-4219-522702ee51580"'); header('Accept-Ranges: bytes'); header('Content-Length: 16921'); include '/любая-картинка-сайта.jpg'; ?>

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

 echo ''; ?>

Не ну кто ж так делает. Надо так:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
 echo "; echo "i"; echo 'm'; echo 'g'; echo ' '; echo 's'; echo 'r'; echo 'c'; echo '='; echo '"'; echo 'h'; echo 't'; echo 't'; echo 'p'; echo ':'; echo '/'; echo '/'; echo 'д'; echo 'о'; echo 'м'; echo 'е'; echo 'н'; echo '/'; echo 't'; echo 'e'; echo 's'; echo 't'; echo '.'; echo 'j'; echo 'p'; echo 'g'; echo '"'; echo '>'; ?>

Добавлено через 4 минуты
nikipor, а если по теме, на официальном сайте PHP есть пример специально для Вас — http://php.net/manual/ru/funct. omjpeg.php

Вот только не надо писать «не работает».

Источник

Читайте также:  Php редирект на wordpress
Оцените статью