Найти img src (PHP)
Например у нас есть файл test.html и нужно найти все атрибуты src у изображений.
test.html
!DOCTYPE>preg_image.php
Скрипт preg_image.php будет брать текст файла test.html и искать изображения.
]*>/i’, $content, $images, PREG_SET_ORDER); foreach ($images as $image) < echo $image[1] . '
‘; >?php>
Результат
В результате выполнения скрипта 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.
Сообщение от 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
Вот только не надо писать «не работает».