Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как создать регулярку preg_replace?

Как создать регулярку preg_replace?


     24.07.2023    preg_replace    Все вопросы » Общие вопросы по PHP    412

вопрос
Я уже обращался с похожим вопросом: https://dle-faq.ru/faq/phpquest/28717-kak-sdelat-umnyy-preg_replace.html

Там я просил помочь в создании регулярки: Пробел Число БукваИкс Число Пробел

Вот рабочая регулярка из того вопроса:

$razreshenie = preg_replace('~.*\s+(\d+\s*?x\s*?\d+).*~', '$1', $video);


Но я столкнулся с ситуациями, что разрешение может быть в начале строки, в конце строки и после разрешения может быть запятая вместо пробела.

$a = "MPEG4 Video (H264) 179.999fps 2997kbps 1280x720";
$b = "1280x720 MPEG4 Video (H264) 179.999fps 2997kbps";
$c = "MPEG4 Video (H264), 1280x720, 179.999fps, 2997kbps";
$d = "MPEG4 Video (H264), 720x480, 179.999fps, 2997kbps";
$e = "MPEG4 Video (H264), 1920x1080, 179.999fps, 2997kbps";


Помогите пожалуйста создать регулярку для preg_replace типа: ТриИлиЧетыреЦифры БукваИкс ТриИлиЧетыреЦифры
То есть нужно забрать из строки разрешение, которое всегда состоит из трёх или четырёх цифр, английской буквы x (икс), и опять трёх или четырёх цифр.

Ответа пока нет


5 комментариев

lutskboy
Эксперт

lutskboy - 24 июля 2023 12:26 -

\d{3,4}x\d{3,4}

NONSENS
Юзер

NONSENS - 24 июля 2023 19:09 -

Спасибо.

Попробывал так:

$textokay = preg_replace('~.*(\d{3,4}x\d{3,4}).*~', '$1', $e);


Отрезает разрешение во всех случаях, но почему-то отрезает первое число (1920) до трёх цифр (920) - результат: 920x1080

Что не так?

Порпробывал так:

$textokay = preg_replace('~.*\s+(\d{3,4}x\d{3,4}).*~', '$1', $b);


Режет нормально, но не работает с варинатом $b (разрешение в начале строки) - выдаёт всю строку.

Ткните пожалуйста носом - как правильно сделать...

Беда у меня с регулярками - не запоминаются вовсе. Сижу два дня - изучаю regex: вроде всё понятно, вроде всё просто - написал себе регулярку, пару дней ещё себе впрок насоздавал регулярок. Проходит месяц - нужно написать регулярку - совсем ничего не помню (словно в первый раз вижу)... И так уже три раза. Не держится это дело в моей голове. С логикой языка всё шикарно, но вот с "феншуем" (с тем что нельзя понять, а нужно просто запомнить) полная беда.

lutskboy
Эксперт

lutskboy - 24 июля 2023 19:38 -

(^|\s)(\d{3,4}x\d{3,4})

dj-avtosh
PHP-developer

dj-avtosh - 24 июля 2023 19:40 -

preg_replace('~.*?(\d{3,4}x\d{3,4}).*~', '$1', $b);

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

NONSENS
Юзер

NONSENS - 24 июля 2023 19:58 -

Вот спасибо!

Аж два рабочих варианта!!!

Если кому готовый первый вариант нужен:

$textokay = preg_replace('~.*(^|\s)(\d{3,4}x\d{3,4}).*~', '$2', $d);


Респект, Господа!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх