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

      Исходная строка:
      Lorem 1:06:16 ips48:5um.

      После замены:
      Lorem <span class="time">1:06:16</span> ips<span class="time">48:5</span>um.

      p. s. Это нужно для PHP скрипта.
          Спасибо, но работает только если в строке два таймкода. В моем случае в строке могут быть десятки таймкодов. Как это учесть? Прошу прощения за глупый вопрос, но никак не найду времени изучить регулярные выражения.
            Цитата ViH @
            Спасибо, но работает только если в строке два таймкода.

            Приведи пример с 3 и 4-мя таймкодами.
              Например, такая строка:
              1:10 - some text<br>
              1:20 - some text<br>
              1:30 - some text<br>
              1:40 - some text<br>

              После замены:
              <span class="time">1:10</span> - some text<br>
              <span class="time">1:20</span> - some text<br>
              <span class="time">1:30</span> - some text<br>
              <span class="time">1:40</span> - some text<br>
                Ну это совершенно разные форматы строк. Проще на каждый формат делать свою регулярку и пробовать их в цикле перебора строк применять последовательно. Были бы более-менее схожие форматы - можно было бы делать одну более универсальную регулярку. На этот формат строк будет другая регулярка.

                Стоп, я понял о чем речь ... Секунду.
                Сообщение отредактировано: Majestio -
                  Лови пример на PHP:

                  ExpandedWrap disabled
                    <?php
                    $str1 = "Lorem 1:06:16 ips48:5um.";
                    $str2 = "1:10 - some text<br>";
                     
                    $replacement = '<span class="time">$0</span>';
                     
                    $new1 = preg_replace('/\d+:\d+(:\d+)?/', $replacement, $str1);
                    $new2 = preg_replace('/\d+:\d+(:\d+)?/', $replacement, $str2);
                     
                    echo "$new1\n";
                    echo "$new2\n";
                    ?>

                  Онлайн тест.
                    Огромнейшее Спасибо! Работает как надо!!!

                    Там в примере одна строка, просто я её записал в несколько. Прошу прощения за путаницу:
                    ExpandedWrap disabled
                      $str = "1:10 - some text<br>1:20 - some text<br>1:30 - some text<br>1:40 - some text<br>";
                      $replacement = '<span class="time">$0</span>';
                      $res = preg_replace('/\d+:\d+(:\d+)?/', $replacement, $str);
                      echo ($res);
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


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