Вложенность в регулярных выражениях
Мастера регулярных выражений могут делать настоящую магию. Вместо того, чтобы писать сложные лексические анализаторы, они могут одной строчкой сделать всю работу. Это как игра го - изучить основы очень просто, но чтобы стать настоящим профессионалом нужны годы опыта.
Допустим, есть строка
-
begin someFunction("test"); end;
Нужно выделить из неё
-
("test")
Элементарно
-
$s = 'begin someFunction("test"); end;';
выведет
-
(
-
[0] => ("test")
-
)
Но в боевых условиях пользователи обязательно рано или поздно добавят параметр со скобками
-
begin someFunction("test",(5+3)*2); end;
Наш код
-
$s = 'begin someFunction("test",(5+3)*2); end;';
выведет
-
Array
-
(
-
[0] => ("test",(5+3)
-
)
А вот вам
-
$s = 'begin someFunction("test",(5+3)*2); end;';
Это выведет
-
(
-
[0] => ("test",(5+3)*2)
-
[1] => *2
-
[2] => *2
-
)
А теперь немного оптимизируем
Модификатор "x" даёт ставить лишние пробелы для улучшения читабельности.
?> - ускоряет производительность, не проверяя одни и те же символы, если они уже где-то подошли
?: - делает так, чтобы не выводилось это подвыражение (заметьте пропажу [1], [2])
-
(
-
[0] => ("test",(5+3)*2)
-
)
Детальнее можно читать в мануале - http://php.net/manual/en/regexp.reference.php
На то они и мастера.
begin someFunction("test"); end; А разве в пхп есть операторы бегин\енд??? Я что-то такого еще не слышал
Нет, но ничего ни мешает существовать такой демо-строке
Обана, я раньше не знал этого. Надо будет изучить эту штуковину.
Мастер ,да вы просто мастер:-)))