core/classes/validator/Validator.class.php 의 validate() 함수를 분석하고 있습니다.

       $func_body = preg_replace('/\\$(\w+)/', '$c[\'$1\']', $cond['test']);

이런 코드가 있는데요.. 여기서 \\$(\w+)를 어떻게 해석해야 할지 모르겠습니다..

 

\\는 backslash 문자 그대로 사용하라는 뜻이고 $는 string 끝에 존재하는 경우에 matching 시키라는 것으로 알고 있는데요.. 그러면 \ 뒤에는 아무것도 오면 안되는데 (\w+)가 있네요..

고수님들 지식나눔 부탁드립니다ㅠ

  • profile

    \\는 정규식에 전달되지 않습니다. PHP에서 문자열을 정의하는 과정에서 하나가 먹혀 버려서 실제로 정규식에서는 \ 하나만 전달되지요. 따라서 그 뒤에 나오는 $를 escape하게 됩니다. 즉, 여기서 $는 끝이라는 뜻이 아니라 $라는 문자를 그대로 매칭합니다.

     

    (PHP에서 쿼리문을 작성하여 SQL에서 실행할 때는 양쪽에서 \를 사이좋게 나눠먹기 때문에 \\\\ 이렇게 많이 써야 하는 경우도 있습니다 ㅠ)

     

    결국 $ 뒤에 "word"에 해당하는 문자 1개 이상이 붙은 것을 매칭하게 되지요.

    예: $var, $oDocument, $document_list 등등...

  • ?
    아... 그렇군요. 항상 감사합니다!ㅠ