반응형
영숫자가 아닌 문자를 삭제하려면 어떻게 해야 합니까?
문자열에 없는 모든 문자를 제거해야 합니다.a-z A-Z 0-9
set 또는 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의 기능을 설명하는 이 훌륭한 도구를 사용하여 테스트해 보십시오.
[\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
반응형
'programing' 카테고리의 다른 글
TypeScript - 올바른 버전의 setTimeout 사용(노드와 창) (0) | 2023.04.06 |
---|---|
Word Press vs Expression Engine: EE는 가격 대비 가치가 있습니까? (0) | 2023.04.01 |
알 수 없는 구조로 JSON을 디코딩합니다. (0) | 2023.04.01 |
Windows Server 2016에서 WordPress에 디렉터리 wp-content를 만들 수 없습니다. (0) | 2023.04.01 |
Larabel 및 Wordpress가 동일한 서버/도메인 상에 있음 (0) | 2023.04.01 |