strval(PHP 3, PHP 4) strval - получает строковое значение переменной. Описаниеstring strval (mixed var) Возвращает string-значение переменной var. См. в документации по string информацию о конвертировании в строки. var может быть любым скалярным типом. Вы не можете использовать strval() с массивами или объектами. См. также floatval(), intval(), settype() и Трюки с типами. |
||||||||||
|
||||||||||
Рассмотрим проблему совпадения строки в скобках, когда допускается неограниченное
вложение скобок. Без использования рекурсии лучшее, что можно сделать, это использовать
патэрн, который совпадает на некоторую фиксированную глубину вложения. Невозможно
обработать вложения на произвольно большую глубину. В Perl 5.6 имеется экспериментальная
возможность, позволяющая (помимо прочего) выполнять рекурсию регулярных выражений.
Специальный элемент (?R) предоставлен для этого специфического case/варианта
рекурсии.
PCRE-патэрн разрешает проблему скобок (предполагая, что опция PCRE_EXTENDED
установлена так, что пробел игнорируется):
\( ( (?>[^()]+) | (?R) )* \)
Вначале он совпадает с открывающей скобкой. Затем - с любым количеством подстрок,
которые могут быть либо последовательностями не-скобок, либо рекурсивным совпадением
самого патэрна (т.е. корректно заключённой в скобки подстрокой). Наконец, идёт
закрывающая скобка.
Этот особый пример патэрна содержит вложенное бесконечное повторение, и, таким
образом, использование однократного субпатэрна для совпадения со строками из
не-скобок очень важно, когда патэрн применяется к строкам, которые не
совпадают. Например, если его применить к
(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
то он быстро даст "нет совпадений". Однако, если однократный/once-only
субпатэрн не используется, поиск совпадения будет продолжаться длительное время,
так как есть много различных способов, которыми повторения + и * могут кроить
строку-субъект, и все они должны быть проверены, прежде чем будет выдано сообщение
о неудаче поиска.
| |