preg_match 특수문자 정규식 질문입니다.
본문
기존에는 ereg_replace 이걸로 썼는데 php 버전업이 되는 바람에 못 써서
preg_match 이걸로 교체해야 하는데 특수문자 처리를 잘 모르겠습니다.
예를 들어
1, / 이거 하나만 패턴으로 찾을려고 하면 어떻게 해야 하나요?
$pattern = "/^//i";
이렇게하면 될까 했는데 안되더라고요.
2, 그리고 "http://" 이거를 패턴으로 할려고 하면 어떻게 해야 하나요?
답변 1
- https://www.php.net/manual/en/regexp.reference.escape.php
if ( preg_match('/\//', $변수) ) echo '/ 문자 포함';
구분자를 /가 아닌 다른 문자를 사용하면 Escape 처리가 편해집니다.
if ( preg_match('#/#', $변수) ) echo '/ 문자 포함';
http:// 패턴 지정도 마찬가지입니다.
if ( !preg_match('#^http://#', $변수) ) exit('http://로 시작하지 않습니다.'); // 대소문자 무시 #^http://#i
if ( !preg_match('#^https?://#', $변수) ) exit('http:// 또는 https://로 시작하지 않습니다.');
단순 문자[열] 포함 여부는 strpos() 함수 사용이 간편합니다.
if ( strpos($변수, '/')!==false ) echo '/ 문자 포함!';
답변을 작성하시기 전에 로그인 해주세요.