● 디버깅 테스트에 필요한 함수
var_export : 결과 값은 PHP에 맞는 유효한 타입으로 변환되어 출력, 타 스크립트 연계 시 사용 var_dump : 각 데이터에 대한 상세한 정보(타입, 길이) 출력
print_r : 타입을 제외한 데이터 값만 간단하게 출력
|
https://niceman.tistory.com/34
● 정규식 표현 함수 / 문자 필터링 함수 (preg_match)
ereg, eregi와 같은 함수는 취약점 발견이 있어, PHP 5.3버전 이상부터는 preg_match를 사용한다고 합니다. 관련되어 자세한 포스팅은 에 취약점에 대해 소개 되고 있습니다.
preg_match ( 정규식 표현 , 검색 대상 문자열 , 매칭 된 값들을 배열로 저장 ) return 값은 매칭 성공 시 1, 실패 시 0을 가져옵니다. https://ponyozzang.tistory.com/176
preg_replace 특정 패턴을 찾아 다른 패턴으로 바꿔주는 함수 preg_replace("[패턴]" , "[바꿀 패턴]" , "[바꿀 문장]"); .... if(preg_match("/^[0-9]/", $clue, $match )){ $dnoun_tmp = $clue; # . / , 등의 패턴을 제거 $dnoun_tmp = preg_replace('/\.|,|^\/$/', "", $dnoun_tmp); # 숫자 제거 $dnoun_tmp = preg_replace('/[0-9]/' , "" , $dnoun_tmp); $dnoun_tmp = preg_replace('/이상$|미만$/' , "" , $dnoun_tmp); echo $clue . "\t" ." => \t". $dnoun_tmp . "</br>"; } ..... https://ra2kstar.tistory.com/117
- 문자열 안에서 특정한 정규식 패턴의 존재 여부를 찾는데 유용한 내장함수입니다. - 문자열($subject)에 패턴($pattern)과 일치하는 것이 있다면 참을 반환합니다. - 패턴임을 알리기 위해 앞뒤로 슬래쉬( / )를 붙여줘야 합니다. - 마지막 슬래쉬 뒤에 여러 가지 옵션을 붙일 수 있습니다. - 예) /패턴/i 이런 식으로... i는 대소문자를 구분하지 않음을 의미합니다. - 패턴과 일치하는 데이터가 있다면 $matches 배열에 저장됩니다. - 첫 번째 배열 요소($matches[0])에는 패턴과 일치하는 데이터가 대입됩니다. - 두 번째 배열 요소($matches[1])에는 패턴 내에 괄호로 묶인 부분에 해당하는 데이터가 대입됩니다.
$subject = "I just want to look forward to the future."; $pattern = "/([a-zA-Z]+ )+/"; if(preg_match($pattern, $subject, $matches)) echo "일치하는 패턴이 있습니다. (".$matches[0].")"; else echo "일치하는 패턴이 없습니다.";
* 패턴에 [a-zA-Z]이면 알파벳 영문 / [가-힣]이면 한글을 검색 혹은 비교할 수 있습니다.
* 문자셋이 EUC-KR 경우 /[\xA1-\xFE\xA1-\xFE]/
* 문자셋이 UTF-8 경우 $pattern = "/[가-힣 ]+/"; 혹은 $pattern = "/[{\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF} ]+/u";
|
● 대상 문자열을 앞부분부터 검색하여 조건 문자열이 몇 번째 위치에 있는지를 찾는 함수 (strpos/strrpos)
strrpos([대상 문자열], [조건 문자열], [검색 시작 위치]) 함수 - strpos()는 대상 문자열을 앞부분부터 검색하여 조건 문자열이 몇 번째 위치에 있는지를 찾는 함수입니다. - strrpos()는 대상 문자열을 뒷부분부터 검색하여 조건 문자열이 몇 번째 위치에 있는지를 찾는 함수입니다. - 두 함수 모두 영문자의 대소문자를 구별하여 검색합니다. - boolean을 받아올 때, 참이면 '===', 거짓이면 '!=='을 사용해야 합니다.
$gp_string = "abc abc abc"; $gp_find = "c"; $pos = strpos($gp_string, $gp_find); $rpos = strrpos($gp_string, $gp_find);
if ($pos === false) { echo "strpos() : <br/>\"".$gp_string."\" 문자열에서 \"".$gp_find."\" 문자열을 찾지 못했습니다.<br/><br/>"; } else { echo "strpos() : <br/>\"".$gp_string."\" 문자열에서 \"".$gp_find."\" 문자열을 찾았습니다.<br/>"; echo "찾는 문자열은 ".$pos."번째 위치에 존재합니다.<br/><br/>"; } if ($rpos === false) { echo "strrpos() : <br/>\"".$gp_string."\" 문자열에서 \"".$gp_find."\" 문자열을 찾지 못했습니다.<br/>"; } else { echo "strrpos() : <br/>\"".$gp_string."\" 문자열에서 \"".$gp_find."\" 문자열을 찾았습니다.<br/>"; echo "찾는 문자열은 ".$rpos."번째 위치에 존재합니다."; } |
● 검색할 문자열($haystack) 내에서 찾을 문자열($needle)이 있는지 검색하는 함수
strstr ($haystack, $needle[, bool $before_needle = false ]) 함수 - 검색할 문자열($haystack) 내에서 찾을 문자열($needle)이 있는지 검색하는 함수입니다. - 검색은 왼쪽부터 시작되며, 찾은 문자열($needle)부터 문자열($haystack) 마지막까지 반환합니다.
$gp_email = "admin@goopia.com"; $gp_domain = strstr($gp_email, '@'); echo "도메인 : ".$gp_domain; echo "<br/>"; $gp_user = strstr($gp_email, '@', true); echo "사용자 : ".$gp_user; |
● 대상 문자열을 앞부분부터 검색하여 조건 문자열이 몇 번째 위치에 있는지 리턴 (stripos / strripos)
stripos([대상 문자열], [조건 문자열], [시작 위치]) 함수 - stripos()는 대상 문자열을 앞부분부터 검색하여 조건 문자열이 몇 번째 위치에 있는지 리턴합니다. - strripos()는 대상 문자열을 뒷부분부터 검색하여 조건 문자열이 몇 번째 위치에 있는지 리턴합니다. - 두 함수 모두 영문자의 대소문자를 구별하지 않습니다. - 시작 위치는 생략 가능하며, 지정할 경우 검색될 문자열 범위는 '시작 위치~마지막'까지가 됩니다..
$gp_email = "admin@goopia.com"; $gp_domain = stripos($gp_email, 'a'); echo "stripos : ".$gp_domain; echo "<br/>"; $gp_domain = stripos($gp_email, 'a', 5); echo "stripos : ".$gp_domain; echo "<br/>"; $gp_domain = strripos($gp_email, 'a'); echo "strripos : ".$gp_domain; echo "<br/>"; $gp_domain = strripos($gp_email, 'a', 12); echo "strripos : ".$gp_domain; |
● 대상 문자열을 앞부분부터 검색하여 조건 문자열이 몇 번째 위치에 있는지 찾음(mb_strpos / mb_stripos)
/ mb_strripos([대상 문자열], [조건 문자열], [시작위치], [인코딩]) 함수 - mb_strpos()와 mb_stripos()는 대상 문자열을 앞부분부터 검색하여 조건 문자열이 몇 번째 위치에 있는지 찾습니다. - mb_strrpos()와 mb_strripos()는 대상 문자열을 뒷부분부터 검색하여 조건 문자열이 몇 번째 위치에 있는지 찾습니다. - 4개 함수 모두 한글과 같은 2byte짜리 문자가 포함된 문자열을 처리를 하기 위한 함수입니다.
$str = "한글 문자열을 검색(search) 혹은 비교하여 원하는 STRING 찾기"; $find = "R"; echo $str."<br/>"; echo "찾는 문자열 : ".$find."<br/>"; echo "mb_strpos : ".mb_strpos($str, $find, 0, "UTF-8")."<br/>"; echo "mb_strrpos : ".mb_strrpos($str, $find, 0, "UTF-8")."<br/>"; echo "mb_stripos : ".mb_stripos($str, $find, 0, "UTF-8")."<br/>"; echo "mb_strripos : ".mb_strripos($str, $find, 0, "UTF-8");
|
'배우고 있습니다 > PHP' 카테고리의 다른 글
[laravel] rules max, count와 mb_strlen (0) | 2024.02.28 |
---|---|
[Laravel] $hidden의 의미 (0) | 2024.02.06 |
[PHP 기초] 금칙어 / 단어 필터링 (0) | 2019.11.10 |