|
|
|
|
<?php
echo preg_replace('/b(?<sub>a)b/', '<|$sub|>', 'bab');
//ожидаю
b<|a|>b
?>
|
то есть я хочу узнать как ссылаться на именованию группу в замене.
Ответ ожидаю отличным от:
1) Обращаться к номеру легко, но не всегда возможно.
2) Можно еще использовать калбек функцию, хотя для простых вещей как то некрасиво. Вот я думаю может я что то упустил.
Ну если вариантов кроме выше описных больше нету, то ладно, мне просто интересно. | |
|
|
|
|
|
|
|
для: duhon
(24.11.2011 в 14:14)
| | Т.е. имеется в виду, как сослаться на то, что в круглых скобках? | |
|
|
|
|
|
|
|
для: cheops
(24.11.2011 в 14:21)
| | да, но именно на именованную.
echo preg_replace('/b(?<sub>a)b/', '<|$sub|>', 'bab');
|
в данном примере можно было бы сослаться на его номер $1 или \1, но бывают ситуации когда патерн не полностью известен.
Например
<?php
$var //какая то часть шаблона которая возможно в какой то момент может включать в себя группу тоесть ()
$text //входящий тект сейчас не имеет значения, тоесть без разницы что там
echo preg_replace("/b $var (?<my>ba)/", "<$1>", $text);
?>
|
в конечном итоге сослаться на уникальное имя $my было бы разумней | |
|
|
|
|
|
|
|
для: duhon
(24.11.2011 в 14:42)
| | Ну нет... такого нет, да и разумно использовать цифры. Регулярные выражения не велики (их для этого и создавали, чтобы сложную задачу коротко записывать), а цифры не обладают побочным эффектом... с другими же символами мороки много... а ну как вы кавычку выделите или слеш - голову потом сломаешь как экранировать...
PS В PHP вообще не очень удачная инфраструктура регулярных выражений. По уму ими бы нужно пользоваться без кавычек, как в Perl, JavaScript или AcrionScript... | |
|
|
|