if(preg_match('/[0]|aaa/',$keyword))
이렇게 조건을 걸려다 보니 어제 다른 작업하다가 특수문자 취급을 해주려면 \를 먼저 써줘야 하더라구요.
if(preg_match('/\[0\]|aaa/',$keyword))
이렇게 해주면 될까요 ???
PHP | PHP 7.2 |
---|---|
CMS | XpressEngine |
if(preg_match('/[0]|aaa/',$keyword))
이렇게 조건을 걸려다 보니 어제 다른 작업하다가 특수문자 취급을 해주려면 \를 먼저 써줘야 하더라구요.
if(preg_match('/\[0\]|aaa/',$keyword))
이렇게 해주면 될까요 ???
알려주신대로
$pattern = $addon_info->not_allow;
if(preg_match('/' . preg_quote($pattern, '/') . '/', $keyword)) return;
이렇게 처리해봤습니다.
엇.. 그러나 뭔가 잘 안되네요 ㅎ
[0]|aaa 라는 문자열 그대로 찾으시려면 위와 같이 하시면 되고,
[0] 또는 aaa 를 찾으시려면 | 는 이스케이프 처리하지 않아야 합니다. | 가 "또는"이라는 의미이니까요.
$pattern = explode('|', $addon_info->not_allow);
if(preg_match('/' . implode('|', array_map(function($str) {
return preg_quote($str, '/');
}, $pattern)) . '/', $keyword)) return;
함수 경계를 알아보기 쉽도록 표시했습니다.
| 도 \| 로 쓰셔야 할 거예요.
귀찮으면 preg_quote 함수로 처리해 버리세요. 자동으로 다 해줍니다.
$pattern = '[0]|aaa';
if(preg_match('/' . preg_quote($pattern, '/') . '/', $keyword))