Задать вопрос
Ответы пользователя по тегу Регулярные выражения
  • Какое регулярное выражение подойдет?

    @Catrinblaidd
    function nextString($text, $str) {
      \preg_match("/{$str}[\r\n]+([^\r\n]+)/u", $text, $matches);
      if (isset($matches[1])) {
        return $matches[1];
      } else {
        return false;
      }
    }
    Ответ написан
    Комментировать
  • Как написать регулярное выражения?

    @Catrinblaidd
    $string = "SIP/rosnet_6651560/808080808080,300,Tt";
    \preg_match('/\/([\d]+)\,/', $string, $result);
    echo $result[1];
    Ответ написан
    Комментировать
  • Как получить случайную строку из регулярного выражения?

    @Catrinblaidd
    Можно решить "в лоб", правда это будет не очень универсально..
    $preg = '/USER\-[0-9]+\-[A-Z]{1}/';
    $result = \str_replace(['\\', '/'], '', $preg);
    \preg_match_all('/\[([\w\d-]+)\][{]*([\+\*\d,]+)[}]*/', $preg, $match);
    $maxCount = 10;
    if (!empty($match[0])) {
      foreach ($match[1] as $key => $part) {
        $part = \explode('-', $part);
        $range = \range($part[0], $part[1]);
        $countData = $match[2][$key];
        if ($countData == '+') {
          $count = \mt_rand(1, $maxCount);
        } elseif ($countData == '*') {
          $count = \mt_rand(0, $maxCount);
        } else {
          $countData = \explode(',', $countData);
          if (isset($countData[1])) {
            $count = \mt_rand($countData[0], $countData[1]);
          } else {
            $count = $countData[0];
          }
        }
        $n = 0;
        $generated = '';
        $rangeTotal = \sizeof($range);
        for ($n; $n < $count; ++$n) {
          $randKey = \mt_rand (0, $rangeTotal - 1);
          $generated .= $range[$randKey];
        }
        $replace = $match[0][$key];
        $result = \str_replace($replace, $generated, $result);
      }
    }
    echo $result;
    Ответ написан
    Комментировать