-
PHP PDO의 bindParam와 bindValue의 차이
PDO(PHP Data Objects)에서 Prepared statements 사용시 값을 bind하기 위해 PDOStatement::bindParam 또는 PDOStatement::bindValue를 주로 사용한다. 두개의 함수는 사용법이 거의 유사해서 어떤 차이가 있는지 알아둘 필요가 있다. 아래의 예시를 보면 정확한 차이를 바로 알 수 있다. <?php $sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindParam(':s
-
PHP 정규식(PCRE)의 모든 것 - 에필로그
앞선 글들에서 PCRE에 대한 전반적인 내용을 소개 했다. 일부는 내용이 이해하기 어려울 수 있다. 나름 이해가 어려운 부분은 예시를 추가해서 이해를 돕고자 했으나 부족할 것으로 보인다. PCRE를 익히는 가장 좋은 방법은 직접 패턴을 만들어 보면서 학습하는 것이다. PCRE에 대한 소개를 마치며 학습 및 활용에 도움이 될 수 있는 몇가지 사이트와 예시들을 남겨둔다. 정규식을 웹 상에서 테스트해 볼 수 있는 사이트를 소개한다(검색해보면 더 많은 사이트들이 존재하니 자신에게 맞는 사이트를 사용하면 된다). regular xpressi
-
PHP 정규식(PCRE)의 모든 것 - 재귀 패턴(Recursive patterns)
Recursive patterns (재귀 패턴) 무한대의 중첩 괄호를 허용하면서 괄호 안의 문자열을 일치시키는 문제를 고려해 보자. 재귀를 사용하지 않고 수행 할 수 있는 최상의 방법은 중첩의 고정된 깊이까지 일치하는 패턴을 사용하는 것이다. 임의의 중첩 깊이는 처리 할 수 없다. Perl 5.6은 정규식을 반복 할 수 있는 실험적 기능을 제공한다. 특수 항목 (?R)은 재귀의 특정 경우에 대해 제공된다. \( ( (?>[^()]+) | (?R) )* \) 이 PCRE 패턴은 괄호 문제를 해결한다(공백을 무시하도록 PCRE_EX
-
PHP 정규식(PCRE)의 모든 것 - 주석(Comments)
Comments (주석) 시퀀스 (?#는 다음 닫는 괄호까지 이어지는 주석의 시작을 표시한다. 중첩된 괄호는 허용되지 않으며 주석을 구성하는 문자는 패턴 일치에 전혀 영향을 미치지 않는다. PCRE_EXTENDED 옵션을 설정하면 캐릭터 클래스 외부의 이스케이프 처리되지 않은 # 문자가 패턴의 다음 줄바꿈 문자까지 이어지는 주석을 나타낸다. <?php $string = 'test'; echo preg_match('/te(?# 주석테스트)st/', $string) . "\n"; echo preg_match('/te#~~~~ st/',
-
PHP 정규식(PCRE)의 모든 것 - 조건부 서브 패턴(Conditional subpatterns)
Conditional subpatterns (조건부 서브 패턴) 조건부로 서브 패턴을 따르거나 어설션의 결과에 따라 두 개의 대체 서브 패턴 중 하나를 선택하거나 이전 캡처 서브 패턴이 일치하는지 여부를 결정할 수 있다. 조건부 서브 패턴의 가능한 두 가지 형태는 다음과 같다. (?(condition)yes-pattern) (?(condition)yes-pattern|no-pattern) 조건이 충족되면 "yes-pattern"이 사용된다. 그렇지 않으면 "no-pattern"(존재한다면)이 사용된다. 서브 패턴에 두 개 이상의 선