PHP 개발에서 문자열 교체는 일반적인 요구 사항입니다. 특히 다국어 또는 다중 바이트 캐릭터에서 MB_EREGI_REPLACE 기능은 다중 바이트 문자 및 사례에 민감한 일치에 대한 지원으로 인해 매우 실용적인 도구가됩니다.
이 기사에서는 MB_EREGI_REPLACE 기능을 사용하여 문자열에서 PHP 변수를 다루지 만 이중 인용문이나 곱슬 버팀대는 아닙니다. 교체 작업에서 변수를 안전하게 사용하는 방법을 보여줍니다.
PHP에서 가변 구문 분석은 일반적으로 이중 인용 문자열 또는 곱슬 괄호로 발생합니다.
echo "Hello $name"; // 변수는 구문 분석됩니다
echo "Hello {$name}"; // 변수도 구문 분석됩니다
그러나 문자열이 이중 인용문으로 둘러싸여 있지 않거나 변수가 곱슬 버팀대로 래핑되지 않으면 구문 분석이 적용되지 않습니다.
echo 'Hello $name'; // 산출:Hello $name(변수는 구문 분석되지 않았습니다)
echo 'Hello '.$name; // 옳은,변수는 스 플라이 싱으로 구문 분석됩니다
이것을 mb_eregi_replace 로 교체 할 때, 교체 템플릿에 변수가 나타나고 올바르게 처리되지 않으면 변수 이름이 일반 문자열로 취급되거나 일치하는 결과가 잘못 될 수 있습니다.
MB_EREGI_REPLACE 는 PHP의 Multibyte String 함수 패밀리에서 정기적 인 사례 감수성 교체를 지원하는 기능입니다. 함수 정의는 다음과 같습니다.
string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msr" ] )
$ 패턴 : 정규 표현 패턴, 사례에 민감하지 않습니다.
$ 대체 : 변수를 포함 할 수있는 문자열 교체.
$ 문자열 : 대상 문자열.
$ 옵션 : 일치 옵션, 기본 "MSR" .
문자열의 $ varname 변수를 실제 값으로 바꾸려고한다고 가정하지만 원래 문자열은 변수를 이중 따옴표 또는 곱슬 버팀대로 래핑하지 않습니다.
$content = "이것은 변수입니다$varName시험";
"m66.net" 과 같은 특정 값으로 $ varname을 mb_eregi_replace 로 바꾸려면 다음을 직접 작성하십시오.
$replacement = "m66.net";
mb_eregi_replace('\$varName', $replacement, $content);
여기 \ $ varname 은 정규 표현식의 문자 그대로 의 varname 이며 m66.net 으로 대체됩니다. $는 규칙적으로 탈출해야합니다.
<?php
// 대상 문자열,변수는 이중 인용문으로 랩핑되지 않습니다
$content = '우리 사이트를 방문하십시오:$siteName,더 흥미로운 콘텐츠를 경험하십시오!';
// 교체 해야하는 변수 이름입니다(오자)
$pattern = '\$siteName';
// 교체의 실제 값
$replacement = 'm66.net';
// 사용mb_eregi_replace교체하십시오,사건을 무시하십시오
$newContent = mb_eregi_replace($pattern, $replacement, $content);
// 산출替换结果
echo $newContent;
?>
출력 결과 :
우리 사이트를 방문하십시오:m66.net,더 흥미로운 콘텐츠를 경험하십시오!
정규 탈출 : 문자열의 $ 기호를 일치 시키려면 정규 표현식으로 \ $를 써야합니다.
가변 교체 : 교체 문자열은 값이거나 동적으로 전달 될 수 있습니다.
이중 인용문 또는 곱슬 괄호가없는 시나리오 : 불일치를 피하기 위해 문자 그대로 변수 이름을 직접 일치시킵니다.
멀티 바이트 지원 : MB_EREGI_REPLACE는 중국 교체 요구에 적합한 UTF-8 및 기타 인코딩을 완벽하게 지원합니다.
대상 문자열에 비교할 수없는 PHP 변수 (예 : 이중 따옴표 또는 곱슬 버팀대가없는 $ var )가 포함 된 경우, mb_eregi_replace는 문자 그럴 변수 이름을 일치시켜 대체 할 수 있습니다.
정규 표현식, 특히 $ 기호를 사용할 때의 탈출구에주의하십시오.
교체 컨텐츠는 동적 유연성을 보장하기 위해 변수로 직접 대체 할 수 있습니다.
MB_EREGI_REPLACE는 다중 바이트 환경에서 사례에 민감한 교체에 적합합니다.