Замена случайных чисел

168
02 марта 2018, 18:15

Есть строки

Пример

910786584_w269_h230_40_2.jpg

Мне нужно заменить _w269_h230_ на _w2000_h2000_

Проблема в том что на каждом изображении разные размеры _w269_h230_ но всегда одинаковы символы. Как правильно зацепится и заменить цифры

Answer 1

Можно поколдовать с preg_replace или просто использовать explode-implode, как пример։

      <?php
            $string = '910786584_w269_h230_40_2.jpg';
            $list = explode( '_', $string );
            $list[ 1 ] = 'w2000';
            $list[ 2 ] = 'h2000';
            $result = implode( '_', $list );
            print_r( $result );
        ?>
Answer 2

Ещё вариант в коллекцию ответов. Можно оптимизировать шаблон, и использовать подмаски:

$str = '910786584_w269_h230_40_2.jpg';
$patt = '~_([wh])\d+~';
$repl = '_${1}2000';
echo preg_replace($patt, $repl, $str);

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

$str = '910786584_w269_h230_40_2.jpg';
$patt = ['~_w\d+~', '~_h\d+~'];
$repl = ['_w2000', '_h2000'];
echo preg_replace($patt, $repl, $str);
READ ALSO
Проверка форм GET

Проверка форм GET

Добрый деньНе могу понять как правильно проверить форму в php

141
Выполнить код перед запуском тестов

Выполнить код перед запуском тестов

Встала проблема выполнения некоторого кода, перед запуском всех юнит тестов

152
json php mysql получить значения

json php mysql получить значения

как получить два значения vipb и vipe из массива

202
WP_Query и другие записи из категории

WP_Query и другие записи из категории

Хочу сделать после поста другие записи из этой же категорииНо есть еще один нюанс, создал произвольное поле и там указываю ID, которые хочу...

151