На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
  
    > замена по конкретной позиции
      Добрый день всем.
      Помогите решить следующую задачу.

      ExpandedWrap disabled
        <?php
         
            $mask = 'mask/(:num:1)/(:num:2)/(:num:3)'; // первая маска для поиска текущей строки
            $regexp = '#^mask/(\d+)/(\d+)/(\d+)$#'; // Преобразовываю в регулярку через preg_replace
         
            $result = 'result/(:num:3)/(:num:2)/(:num:1)'; // вторая маска для получения результирующей строки
            
            $text = 'mask/33/22/11'; // строка в которой ищем совпадения с помощью первой маски
            
            if( preg_match( $regexp, $text ) ){ // класс, находит
                // как быть дальше?
                // чтобы получить результат в виде "result/11/22/33"
            }
        Описание
        mixed preg_match ( string $pattern, string $subject [, array $&matches [, int $flags [, int $offset]]] )

        Ищет в заданном тексте subject совпадения с шаблоном pattern

        В случае, если дополнительный параметр matches указан, он будет заполнен результатами поиска. Элемент $matches[0] будет содержать часть строки, соответствующую вхождению всего шаблона, $matches[1] - часть строки, соответствующую первой подмаске, и так далее.
          preg_replace( $regexp, 'result/$3/$2/$1', $text );

          Или я не понял, что надо...

          Добавлено
          Цитата sweetemmure @
          $result = 'result/(:num:3)/(:num:2)/(:num:1)'; // вторая маска для получения результирующей строки
          Вот это тебе надо преобразовать в 'result/$3/$2/$1'
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0199 ]   [ 15 queries used ]   [ Generated: 27.04.24, 16:51 GMT ]