Я работаю с PHP и API на основе JSON, который возвращает 2 поля со значениями для фотографий свойств:
Photo_url — это URL фотографии обычного размера.
Пример: https://secure.example.org/Directory/AnotherDirectory/0008/102/12.jpg
Если has_large = true, то мы знаем, что большая фотография существует, но API не возвращает конкретный URL.
Однако из документации API мы знаем, что если мы добавим префикс «L» к имени файла изображения, это даст нам правильный URL-адрес большого изображения:
Пример: https://secure.example.org/Directory/AnotherDirectory/0008/102/L12.jpg
Как я могу программно префиксить имена файлов буквой L, прежде чем записывать их в базу данных (MySQL)?
Замечания: Структура URL практически одинакова для всех фотографий.
Единственные части URL изображений, которые изменяются для каждого свойства:
После нескольких часов исследований RegEx, preg_replace () и поиска аналогичных решений в StackOverflow, я все еще не уверен, как сделать это правильно с помощью PHP.
Любая помощь будет оценена. Заранее спасибо.
Кажется, вам нужно только добавить имя файла (без пути) с L
, Имя файла без пути — это что угодно, только не /
в конце строки, которая в регулярном выражении выглядит ([^\/]+)$
, Поэтому желаемая функция замены:
$large_photo_url = preg_replace('/([^\/]+)$/', 'L$1', $photo_url);
Здесь мы используем explode
функция, чтобы split
строка на /
а затем добавление L
в самом конце значение этого массива.
Решение 1:
Попробуйте этот фрагмент кода здесь
<?php
$link="https://secure.example.org/Directory/AnotherDirectory/0008/102/12.jpg";
$portions=explode("/",$link);
$portions[count($portions)-1]="L".$portions[count($portions)-1];
print_r(implode("/", $portions));
Решение 2:
Regex: ([^\/]+)$
1.
([^\/]+)
соответствовать всем до/
(не включая это), здесь круг()
фигурные скобки будут захватывать первый захваченный результат в$1
,2.
$
конец строки
<?php
$link="https://secure.example.org/Directory/AnotherDirectory/0008/102/12.jpg";
echo preg_replace("/([^\/]+)$/", 'L$1', $link);