현재 위치: > 최신 기사 목록> 입력 청소 및 교체를 위해 Filter_var ()와 함께 MB_EREGI_REPLACE 기능을 사용하는 방법은 무엇입니까?

입력 청소 및 교체를 위해 Filter_var ()와 함께 MB_EREGI_REPLACE 기능을 사용하는 방법은 무엇입니까?

M66 2025-06-23

PHP에서 사용자 입력을 처리 할 때 입력 컨텐츠가 안전하고 예상 형식에 따라 개발의 핵심 링크임을 확인하는 것이 개발의 주요 링크입니다. 특히 다중 바이트 스트링 처리 및 잠재적 XSS 공격 방지에서 MB_EREGI_REPLAET ()FILTER_VAR () 의 조합은 유연하고 강력한 솔루션을 제공 할 수 있습니다.

이 기사는이 두 기능을 통해 사용자가 제출 한 데이터를 효과적으로 청소하고 교체하여 잘못된 콘텐츠의 입력을 방지하고 유효한 데이터를 유지하는 방법을 보여줍니다.


1. 기능 소개

mb_eregi_replace ()

MB_EREGI_REPLACE () 는 사례에 민감한 정기적 인 교체 작업을 수행하는 eregi_replace () 의 다중 바이트 버전입니다. UTF-8 인코딩을 지원하며 중국어 또는 기타 멀티 바이트 문자가 포함 된 문자열을 처리하는 데 이상적입니다.

 mb_eregi_replace(string $pattern, string $replacement, string $string, ?string $options = null): string

filter_var ()

Filter_var ()는 변수를 확인하고 청소하기 위해 PHP가 제공 한 필터 기능 중 하나입니다. 이메일, URL, IP 및 기타 형식을 확인하는 데 사용할 수 있으며 잠재적으로 유해한 코드 스 니펫을 제거 할 수도 있습니다.

 filter_var(mixed $value, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed

2. 실제 응용 시나리오

사용자가 제출 한 댓글 내용을 처리하려고한다고 가정하면 다음 단계를 완료해야합니다.

  1. 나쁜 단어를 대체하십시오 (예 : "쓰레기", "사기꾼"등);

  2. 그 안에 유효한 URL 주소를 확인하고 유지하십시오.

  3. 결과가 깨끗하고 안전하며 사용자 친화적인지 확인하십시오.

우리는이 목표로 청소 논리를 구현할 것입니다.


3. 샘플 코드

다음은 mb_eregi_replace ()filter_var ()를 조합하여 사용하는 방법을 보여주는 완전한 예입니다.

 <?php
// 원래 사용자 입력
$input = "당신은 쓰레기 사용자입니다,빨리 가십시오m66.net/spam보고서!게다가m66.net/사기꾼 페이지를 확인하십시오。";

// 차단할 어휘(중국어를 지원합니다)
$badWords = ['쓰레기', '사기'];

// 민감한 단어를 별표로 바꾸십시오
foreach ($badWords as $word) {
    $pattern = preg_quote($word, '/');
    $input = mb_eregi_replace($pattern, str_repeat('*', mb_strlen($word)), $input);
}

// 발췌URL그리고 확인하십시오,안전한 링크로 교체하십시오
$input = preg_replace_callback('/(https?:\/\/)?(m66\.net\/[^\s]+)/i', function ($matches) {
    $url = 'http://' . $matches[2]; // 추가http확인을위한 접두사
    if (filter_var($url, FILTER_VALIDATE_URL)) {
        return '<a href="' . htmlspecialchars($url) . '" target="_blank">' . htmlspecialchars($url) . '</a>';
    }
    return '';
}, $input);

// 출력 결과
echo $input;
?>

4. 출력 예제

사용자 입력이 다음이라고 가정합니다.

 너**사용자,빨리 가십시오<a href="http://m66.net/spam" target="_blank">http://m66.net/spam</a>보고서!게다가<a href="http://m66.net/****" target="_blank">http://m66.net/****</a>페이지도 확인하십시오。