Опять регулярные выражения

webmaster_Chris

Новичок
Опять регулярные выражения

PHP:
if (ereg ("10.([0-9]{1,2,3}).([0-9]{1,2,3}).([0-9]{1,2,3})", $argv[1])) {
$mail = "true";
}
Надо сортировать маску IP... т.е если IP 10.любое.любое.любое то переменной значение отдавать true... где ошибка в reg_exp'е?

-~{}~ 13.05.04 12:06:

Сделал проще:

^10.(.*)
 

webmaster_Chris

Новичок
одна, две или три цифры (смотрел пример на php.net)

http://www.php.net/manual/en/function.ereg.php

Смотри как там дата разбирается
 

Winer

Мимо проходил
точно нет. я думаю ты неправильно понял - {1,3)
а вообще -
1.
Note: preg_match(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg().
2. варианты Demiurg и Stm чем тебе не подходят ???
 

webmaster_Chris

Новичок
Из области сам дурак :)

Example 1. ereg() example

<?php
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "Invalid date format: $date";
}
?>


А это что ->>> ....})-([0-9]{1,2})-([....

-~{}~ 13.05.04 16:29:

Может ты и прав.. perl regexp совместимость я при компиляции не ставил... скорее всего из-за этого и бадяга...
 

Winer

Мимо проходил
webmaster_Chris
а это символ в диапазоне от 0 до 9, потворённый от одного до двух раз
 

webmaster_Chris

Новичок
понимаешь.. проблема такова, что сеть может быть 10.10.0.1 а может 10.234.200.50 скажем, да я вообще то поборол :) если читали, но всё равно интересно как сделать :)
 

Stm

Новичок
усугубляем:
$ip=ip2long("10.005.10.1");

$sip=ip2long("10.5.0.0");
$mask=ip2long("255.255.0.0");

echo ($ip&$mask)==$sip;
 

Stm

Новичок
формируем маску $mask там где нули адрес обнуляется,
дальше работаем с двоичным представлением ip
long2ip( ip2long("10.005.10.1") & ip2long("255.255.0.0") ) == "10.5.0.0"
 

webmaster_Chris

Новичок
а смысл? :)))) вывести скажем 10.0.0.0, ну тоже решение собственно :) а что не устраивает regexp ^10.(.*)? проще же :)
 
Сверху