PHP Regex удалить все после последнего символа в строке

114
7

У меня есть следующая строка img-url, которую я пытаюсь дезинфицировать

$img_string = http://image.s5a.com/is/image/saks/0401694719016_647x329.jpg," "="">/-/http://image.s5a.com/is/image/saks/0401694719016_A1_647x329.jpg," "="">

Я сначала взорвав строку, как это

$img_array = explode('/-/',  $img_string);

Но я не могу найти регулярное выражение, чтобы удалить все после последнего символа в URL-адресе изображения.

например, независимо от того, заканчивается ли URL-адрес img.png или.jpg или.jpeg, мне нужно просто его дезинфицировать. Мой ожидаемый результат

http://image.s5a.com/is/image/saks/0401694719016_647x329.jpg

вместо

http://image.s5a.com/is/image/saks/0401694719016_647x329.jpg," "="">

Поэтому мой вопрос: может ли кто-нибудь помочь мне с необходимым регулярным выражением, чтобы достичь этого?

благодаря

спросил(а) 2021-01-19T17:18:31+03:00 2 месяца, 3 недели назад
1
Решение
62

(?<=jpg|png|jpeg).*

Попробуйте это. Замените empty string.

http://regex101.com/r/rQ6mK9/44

ответил(а) 2021-01-19T17:18:31+03:00 2 месяца, 3 недели назад
44

Вы можете использовать preg_match используя это регулярное выражение:

[^,]+

Демо-версия RegEx

В качестве альтернативы вы также можете использовать это регулярное выражение для preg_match:

^.+?\.(png|jpe?g)

ответил(а) 2021-01-19T17:18:31+03:00 2 месяца, 3 недели назад
44

удаляя все после первой запятой следующим образом:

$result = preg_replace('@[,].*$@ui', '', $img_string);

ответил(а) 2021-01-19T17:18:31+03:00 2 месяца, 3 недели назад
44

Должно работать с этим, удаляет запятую из URL-адреса:

if (preg_match_all("/(.*?),/is", $img_string, $matches)) {
$url = $matches[1][0];
echo $url;
}

Изменить: протестировано здесь: http://ideone.com/pq1WzA

ответил(а) 2021-01-19T17:18:31+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема