사용자 이름을 확인하기 위해 웹사이트를 작성할 때 침투 게임을 하는 친구에게 테스트를 요청했습니다. . 그런 다음 제어 문자를 입력받았습니다(비록 중요하지는 않지만 여전히 영향을 미칩니다. sf의 정규 표현식이 작동하지 않는 것 같습니다. 또한 PHP Perl에서 uncode를 사용하는 방법은 무엇입니까?
다음과 같이 테스트하세요:
<code class="php"><?php $str=json_decode('"ux\u202eDD"'); var_dump($str); var_dump(preg_match('/\x202e/', $str));</code>
일치할 수 없습니다(참고: u202e는 RLO 제어 문자입니다)
금지 문자 테스트: Gong Lun Fa
문자 순서는 RLO
Gong Lun Fa
악용되는 허점이 많은 것 같습니다. 제어 문자로?
Tieba가 제어 캐릭터를 차단했습니다. 하지만 제 능력에는 한계가 있어 JS 제어에 적합한 REX를 찾지 못했습니다.
SF에 도움을 청하러 왔습니다.
PS: 중국어 사용자 이름은 사용할 수 없습니다. /^[x4e00-x9affw]{4,12}$/
사용자 이름을 확인하기 위해 웹사이트를 작성할 때 침투 게임을 하는 친구에게 테스트를 요청했습니다. . 그런 다음 제어 문자를 입력받았습니다(비록 중요하지는 않지만 여전히 영향을 미칩니다. sf의 정규 표현식이 작동하지 않는 것 같습니다. 또한 PHP Perl에서 uncode를 사용하는 방법은 무엇입니까?
다음과 같이 테스트하세요:
<code class="php"><?php $str=json_decode('"ux\u202eDD"'); var_dump($str); var_dump(preg_match('/\x202e/', $str));</code>
일치할 수 없습니다(참고: u202e는 RLO 제어 문자입니다)
금지 문자 테스트: Gong Lun Fa
문자 순서는 RLO
Gong Lun Fa
악용된 허점이 많은 것 같습니다. 제어 문자로?
Tieba가 제어 캐릭터를 차단했습니다. 하지만 제 능력에는 한계가 있어 JS 제어에 적합한 REX를 찾지 못했습니다.
SF에 도움을 청하러 왔습니다.
PS: 중국어 사용자 이름은 사용할 수 없습니다. /^[x4e00-x9affw]{4,12}$/
PHP 매뉴얼을 훑어본 후 일치하는 패턴,,, 중국어, a-zA-Z_, 일치하는 정규 패턴을 찾았습니다: /[wx{4e00}-x{9aff}]{4,12}/u
테스트:
<code class="php"><?php $str=json_decode('"ux这\u202eわかぃまぃだDD"'); var_dump($str); var_dump(preg_match('/^[\w\x{4e00}-\x{9aff}]{4,12}$/u', $str,$match)); var_dump($match);</code>
중국어와 일본어는 괜찮습니다. UTF-8 모드를 켜면 됩니다.
UTF-8 모드에서는 "x{...}"를 사용할 수 있으며 중괄호 안의 내용은 유효 16진수입니다. 주어진 16진수를 UTF-8 문자 코드로 해석합니다.
u (PCRE_UTF8)
이 수정자는 Perl과 호환되지 않는 추가 기능을 활성화합니다. 패턴 문자열은 UTF-8로 간주됩니다. 이 수정자는 Unix의 경우 PHP 4.1.0 이상, Win32의 경우 PHP 4.2.3부터 사용할 수 있습니다. PHP 4.3.5는 패턴의 utf-8 유효성 검사를 시작합니다.
질문이 끝났습니다. 왜 대답하지 않았는지 모르겠습니다.