Сделано в Раскрутке

Архив эхоконференции RU.PHP

- RU.PHP ------------------------------------------------------------- RU.PHP -
 Msg  : #1048 [1443]
 От   : val khokhlov                  2:550/180           26 июня 03, 11:57
 Кому : Konstantin Boyandin                               26 июня 03, 22:23
 Тема : Почемy нe фypычит фyнкция
-------------------------------------------------------------------------------
  Greetings, Konstantin!

26 Jun 03 04:32, Konstantin Boyandin wrote to val khokhlov:

 vk>>         насчет сложные re мое мнение - это ни к чему. проверять
 vk>> валидность ай-пи через re как-то несерьезно. лучше (и, может, быстрее)
 vk>> сделать /(\d+)\.(\d+)\.(\d+)\.(\d+)/, а потом проверить числа в
 vk>> результатах.
 KB>     Hесерьёзно? Сравни производительность обоих вариантов и положи сюда
 KB> итоги...
        имелось в виду именно проверка сложных регэкспов, как в том примере;
мое имхо - лучше было бы разбить его на несколько более простых
        если делать простую проверку одного адреса, то результаты получаются
примерно одинаковы - 11 секунд на 100 тыс. адресов. только для простой проверки
в аналоге я делал сплит по точке и раскрывал цикл, там re не обязательно гонять
но здесь весьма простой re:
function test1($s) {
  $p = '(\d{1,2}|[01]\d\d|2[0-4]\d|25[0-5])';
  return preg_match("/^$p\.$p\.$p\.$p$/", $s);
}
        imho, при увеличении сложности (как в том примере - одним re проверить 
весь url), скорость _сильно_ уменьшается (ну, проверять тот re я не буду -
долго писать аналог).

 KB> - для компонент доменного имени не подходит (подчёркивание недопустимо)
        угу, но в ряде случаев оно как раз подходит по назначению

 KB> - точное значение \w привязано к локали и *не* является, строго говоря,
 KB> синонимом [a-zA-Z0-9_]
        да, согласен - нужно учитывать локаль. вот с этим, в общем случае, хуже
- нужно устанавливать локаль (точнее, ее C_TYPE часть), т.к. модификатор /i
тоже с ней работает, а это не сразу очевидно

 KB>     Ресурсоёмкая - это всегда по отношению к.
        по отношению к обычным strstr, strpos, str_replace, explode и т.п.

  Good luck!
             val

--- 2*3.1415926535897932384626433832795028841971693993751058 ways to eternity
 * Origin: I noore uu alasseo (2:550/180)


При переходе по баннеру - скидка 25% на первый месяц обслуживания!
Самый простой способ получить ROOT-доступ
При переходе по баннеру - скидка 25% на первый месяц обслуживания!