programing

영숫자가 아닌 문자를 삭제하려면 어떻게 해야 합니까?

mailnote 2023. 4. 1. 09:42
반응형

영숫자가 아닌 문자를 삭제하려면 어떻게 해야 합니까?

문자열에 없는 모든 문자를 제거해야 합니다.a-z A-Z 0-9set 또는 not space.

이거 할 수 있는 사람 있어요?

당신은 이미 무엇을 하고 싶은지 거의 알고 있는 것처럼 들립니다. 기본적으로 당신은 그것을 정규식이라고 정의했습니다.

preg_replace("/[^A-Za-z0-9 ]/", '', $string);

Unicode 문자의 경우 다음과 같습니다.

preg_replace("/[^[:alnum:][:space:]]/u", '', $string);

정규 표현이 정답입니다.

$str = preg_replace('/[^a-z\d ]/i', '', $str);
  • i대소문자를 구분하지 않습니다.
  • ^는 로 시작하지 않음을 의미합니다.
  • \d모든 숫자와 일치합니다.
  • a-z사이의 모든 문자를 일치시킵니다.a그리고.z그 이유는i지정할 필요가 없는 파라미터a-z그리고.A-Z.
  • 끝나고\d공백이 있기 때문에 이 정규식에서는 공백이 허용됩니다.

일반적인 A-Z 대신 다른 언어를 지원해야 하는 경우 다음을 사용할 수 있습니다.

preg_replace('/[^\p{L}\p{N} ]+/', '', $string);
  • [^\p{L}\p{N} ]는, 다음의 부정(정의되어 있지 않은 문자와 일치) 문자 클래스를 정의합니다.
    • \p{L}: 모든 언어에서 온 편지.
    • \p{N}: 임의의 스크립트에서 숫자.
    • : 공백 문자.
  • + 1번부터 무제한까지 캐릭터 클래스를 탐욕스럽게 일치시킵니다.

그러면 A-Z뿐만 아니라 다른 언어 및 스크립트의 문자와 숫자가 유지됩니다.

preg_replace('/[^\p{L}\p{N} ]+/', '', 'hello-world'); // helloworld
preg_replace('/[^\p{L}\p{N} ]+/', '', 'abc@~#123-+=öäå'); // abc123öäå
preg_replace('/[^\p{L}\p{N} ]+/', '', '你好世界!@£$%^&*()'); // 你好世界

주의: 이것은 매우 오래되었지만 여전히 관련이 있는 질문입니다.향후 방문자에게 도움이 될 수 있는 보충 정보를 제공하기 위해 답변드립니다.

이를 위한 매우 간단한 regex를 소개합니다.

\W|_

필요에 따라 사용할 수 있습니다(포워드와 함께)./슬래시 딜리미터).

preg_replace("/\W|_/", '', $string);

regex의 기능을 설명하는 이 훌륭한 도구를 사용하여 테스트해 보십시오.

http://www.regexr.com/

[\W_]+

 

$string = preg_replace("/[\W_]+/u", '', $string);

A-Z, a-z, 0-9를 모두 선택하지 않고 삭제합니다.

다음 예시를 참조하십시오.https://regexr.com/3h1rj

preg_replace("/\W+/", '', $string)

테스트하려면 http://regexr.com/ 를 참조해 주세요.

언급URL : https://stackoverflow.com/questions/659025/how-to-remove-non-alphanumeric-characters

반응형