답변 2개 / 댓글 7개
Copy
<?php
function validate_string($string) {
return preg_match('/^[\p{L}\p{N}]+$/u', $string);
}
영문(\p{L}), 숫자(\p{N}), 한글만으로 구성되어 있는지 확인하는 함수입니다.
예전에 쓰던 건데 응용하시면 되실듯?
Copy
// 한글, 숫자, 영문, 일문, 띄어쓰기, 하이픈만 포함된 문자열 추출
$str = "가나다라마바사 abcdfadlelfj ▶ ✔ ✅ ?";
$pattern = "/[^[:alnum:]\p{Hangul}\p{Latin}\p{Katakana}\p{Hiragana}[:space:]\-]/u";
$res_string = preg_replace($pattern, "", $str);
// 특문제거시 공백 2개이상 생길경우 공백 1개로 변경
$res_string = preg_replace('/\s+/', ' ', $res_string );
//res_string => 가나다라마바사 abcdfadlelfj
답변에 대한 댓글 5개
포인트적립님 도움주셔서 너무 감사합니다. 그런데 아래와 같이 해도 여전히 아직도 해당 이모티콘 코드가 필터링 안되고 들어갑니다.
$str_emo = preg_replace('/\d+;/', '', $write[wr_subject]);
$pattern = "/[^[:alnum:]\p{Hangul}\p{Latin}\p{Katakana}\p{Hiragana}[:space:]\-]/u";
$subject = preg_replace($pattern, "", $str_emo);
// 특문제거시 공백 2개이상 생길경우 공백 1개로 변경
$subject = preg_replace('/\s+/', ' ', $subject );
$subject = preg_replace("/\"/", """, get_text(cut_str($subject, 255), 0));
$str_emo = preg_replace('/\d+;/', '', $write[wr_subject]);
$pattern = "/[^[:alnum:]\p{Hangul}\p{Latin}\p{Katakana}\p{Hiragana}[:space:]\-]/u";
$subject = preg_replace($pattern, "", $str_emo);
// 특문제거시 공백 2개이상 생길경우 공백 1개로 변경
$subject = preg_replace('/\s+/', ' ', $subject );
$subject = preg_replace("/\"/", """, get_text(cut_str($subject, 255), 0));
답변을 작성하려면 로그인이 필요합니다.
⭕
️
🔴
✴
🟢
제목에 이런 이미지형태로 출력되는 게시글들의 DB에 저장된값을 보면 해당 이미지들이 해당내용들로 모두 들어가있습니다. 이런패턴의 값이 들어가지 않도록 필터링이 되도록 하려면 어떻게 해야할까요?