PHP에서 문자열 처리는 일반적인 작업 중 하나입니다. 특히 여러 세그먼트가 포함 된 문자열을 다룰 때 특정 부품을 대상 방식으로 교체하는 방법은 종종 여러 기능을 결합하여 구현해야합니다. 이 기사에서는 exploit () 및 mb_eregi_replace () 함수를 결합하여 문자열에서 세그먼트 된 대체 작업을 구현하는 방법을 소개합니다.
Exploit ($ delimiter, $ string)
지정된 Delimiter $ Delimiter 에 따라 String $ String을 배열로 분할하십시오. 단락 또는 특정 로고로 텍스트를 분할하는 데 적합합니다.
mb_eregi_replace ($ pattern, $ 교체, $ string)
다중 바이트 안전 정기 교체 기능은 사례에 민감한 일치를 지원하며 종종 UTF-8 또는 기타 다중 바이트 인코딩 된 텍스트를 정기적으로 대체하는 데 사용됩니다.
여러 단락이있는 긴 텍스트가 있다고 가정합니다. 각 분리기 (예 : Newline \ N 또는 사용자 정의 태그)로 분리되어 있습니다. 이제 일부 단락에서 민감한 단어 교체, 형식 조정 및 기타 작업을 수행해야합니다.
<?php
// 샘플 텍스트,Newlines와 별도의 단락
$text = "이것이 첫 번째 단락입니다。\nURL을 방문하십시오:http://m66.net\n이것은 세 번째 단락입니다,민감한 단어가 포함되어 있습니다:foo。";
// 1. 사용 explode 단락을 Newline으로 나눕니다
$paragraphs = explode("\n", $text);
// 2. 대체 할 민감한 단어를 정의하고 교체하는 규칙을 정의하십시오
$sensitiveWord = "foo";
$replacement = "***";
// 3. 각 단락을 개별적으로 처리하십시오
foreach ($paragraphs as &$para) {
// 사용 mb_eregi_replace 사례에 민감한 교체를 만드십시오
$para = mb_eregi_replace($sensitiveWord, $replacement, $para);
// 단락에 포함 된 경우 URL,도메인 이름을 교체해야합니다 m66.net,可以사용正则성냥 URL
$para = mb_eregi_replace(
// 간단한 경기 URL 규칙 성,성냥 http 또는 https 시작,도메인 이름을 발 뒤꿈치
'(https?:\/\/)([a-z0-9\.\-]+)',
'$1m66.net',
$para
);
}
// 4. 처리 된 단락을 다시 문자열로 병합하십시오
$result = implode("\n", $paragraphs);
// 출력 결과
echo "<pre>" . htmlspecialchars($result) . "</pre>";
?>
원본 텍스트의 세 번째 단락에서 민감한 단어 "foo"는 "***"로 대체되며, 두 번째 단락의 URL http://m66.net은 변경되지 않은 상태로 유지되며 (샘플 도메인 이름은 이미 m66.net ), 다른 도메인 이름도 m66.net 으로 대체됩니다.
예제가 http://example.com 인 경우 http://m66.net 으로 대체됩니다.
먼저 ev