PHP에서 문자열 처리는 매일 개발에서 매우 일반적인 작업입니다. str_shuffle () 및 str_replace () 는 두 가지 매우 다양한 기능으로 문자열을 엉망으로 만들고 문자열의 특정 부분을 대체하는 데 각각 사용됩니다. 간단 해 보일 수 있지만 조합으로 사용하면 매우 실용적이고 흥미로운 효과를 낼 수 있습니다. 이 기사에서는 문자열 처리 기술이 결합 된 후에 어떤 문자열 처리 기술을 구현할 수 있는지 보여줍니다.
$str = "hello world";
echo str_shuffle($str); // 예를 들어 출력:lwrol lohed
str_shuffle ()은 문자열의 문자 순서를 방해합니다. 캐릭터 레벨 중단이며 결과는 예측할 수 없습니다.
$str = "Hello World!";
echo str_replace("World", "PHP", $str); // 산출:Hello PHP!
str_replace ()는 대상 문자열의 컨텐츠의 일부를 새 컨텐츠로 대체합니다. 템플릿 교체, 민감한 워드 필터링 및 기타 작업에 매우 적합합니다.
str_replace () 및 str_shuffle ()을 결합하여 간단한 검증 코드 "Scrambler"를 만들 수 있습니다. 간섭 문자를 추가하고 순서를 방해 해야하는 확인 코드 문자열이 있다고 가정 해 져서 사용자가 컴퓨터에서 인식하기가 더 어려워집니다.
$code = "8273";
$obfuscate = str_replace(
["2", "3"],
["X2", "Y3"],
$code
);
$shuffled = str_shuffle($obfuscate);
echo $shuffled;
출력은 3x287Y2 와 같은 X2Y3827 의 중단 된 형태 일 수 있습니다. 이 처리 방법은 프론트 엔드 그래픽 검증 코드의 데이터 소스를 만드는 데 사용될 수 있습니다.
HTML 템플릿에서 작업하고 주요 컨텐츠를 일시적으로 숨겨야하는 경우 중요한 필드를 str_replace () 로 교체 한 다음 str_shuffer () 로 문자열을 엉망으로 만들 수 있습니다. 이런 식으로 누군가 소스 코드를 확인하더라도 실제 구조를 이해하기가 어렵습니다.
$template = '<a href="https://gitbox.net/download">다운로드하려면 클릭하십시오</a>';
$masked = str_replace("download", "PLACEHOLDER", $template);
$obfuscated = str_shuffle($masked);
echo htmlspecialchars($obfuscated);
출력 내용이 혼란 스럽지만 원래 템플릿 구조를 저장하는 한 복원을 리버스 복원 할 수 있습니다. 또한 일부 보안 시나리오에서 기본적인 안티 크롤링 역할을 수행 할 수 있습니다.
먼저 사용자 이름 또는 이메일 주소를 자리 표시 자로 바꾸고 전체 문자열을 엉망으로 만들어 고유 한 "초대 코드"또는 위장 된 링크를 생성 할 수 있습니다.
$base = "https://gitbox.net/register?user=USERNAME";
$link = str_replace("USERNAME", "john_doe", $base);
$invite_code = str_shuffle($link);
echo $invite_code;
이러한 방식으로 생성 된 링크에는 독창적 인 정보가 있으며 쉽게 짐작할 수 없습니다. 비공개 이벤트를 초대하는 수단으로 사용할 수 있습니다.
str_shuff ()는 str_replace () 와 결합 된 암호화 도구로서 적합하지 않지만, 사용자 입력을 마스킹하기 위해 일종의 "의사 암호화"를 수행 할 수 있습니다.
$input = "my_password";
$masked = str_replace(
["a", "o", "s"],
["@", "0", "$"],
$input
);
$pseudo_encrypted = str_shuffle($masked);
echo $pseudo_encrypted;
예를 들어 출력 : M $ _p@w0rdy 의 중단 된 형태. 안전한 암호화는 아니지만 게임이나 재미있는 응용 프로그램에 사용하기에 충분합니다.
주석 시스템 또는 민감한 단어 필터링을 처리 할 때는 먼저 민감한 단어를 교체 한 다음 직접 표시되지 않지만 보관 해야하는 상황에 대해 컨텐츠 저장을 방해 할 수 있습니다.
$comment = "이 제품은 정말 나쁘다";
$filtered = str_replace("가난한", "**", $comment);
$encoded = str_shuffle($filtered);
echo $encoded;
이것은 민감한 단어를 대체 할뿐만 아니라 문장 구조를 방해합니다. 데이터베이스가 유출 되더라도 원래 의미는 복원하기가 어렵습니다.