Дан ассоциативный массив $tree: Код (Text): array(50) {.... [".1.3.6.1.2.1.4.20.1.1.192.168.1.2"]=> string(10) "192.168.1.2" [".1.3.6.1.2.1.4.20.1.1.192.168.1.3"]=> string(10) "192.168.1.3" [".1.3.6.1.2.1.4.20.1.2.192.168.1.2"]=> string(2) "16" [".1.3.6.1.2.1.4.20.1.2.192.168.1.3"]=> string(2) "17" [".1.3.6.1.2.1.4.20.1.3.192.168.1.2"]=> string(13) "255.255.255.0" [".1.3.6.1.2.1.4.20.1.3.192.168.1.3"]=> string(13) "255.255.255.0" ...} нужно проверить, матчится ли oid на .1.3.6.1.2.1.4.20.1.* пытаюсь так: PHP: foreach($tree as $a => $v) { $value = $v; if (preg_match('/\.1\.3\.6\.1\.2\.1\.4\.20\.1\.\d{1,2}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\..{1,}$/i',$a)) { Не матчится, где ошибся, подскажите, плз, 192.168.1.* -- IP-адреса
@NewUse, для чего в шаблоне между последним "блоком для до-трех-цифр" и "концом-строки" блок "\..{1,}"?
любое количество любых символов потребуется в дальнейшем, да, спасибо, в этом была проблема, там была концовка, а требовался хотяб 1 символ.
Подскажите пожалуйста, можно ли в php regexp-ом вытаскивать из строки в две переменные? пока делаю так: $index=preg_replace('/\.1\.3\.6\.1\.4\.1\.41112\.1\.4\.7\.1\.(\d{1,2})\.1\.(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/i','$2',$a); $key=preg_replace('/\.1\.3\.6\.1\.4\.1\.41112\.1\.4\.7\.1\.(\d{1,2})\.1\.(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/i','$1',$a); Но тут получается двойная обработка одного и того же, как бы её избежать, что-то не нашёл подходящей функции...
вроде нашёл preg_split, а затем array_map() and array_merge(): на подобии http://itsolutionstuff.com/post/how...th-same-keys-without-loop-in-php-example.html буду пробовать...