현재 위치: > 최신 기사 목록> 아이디어를 추출하고 대체하기 위해 preg_match_all과 협력하십시오

아이디어를 추출하고 대체하기 위해 preg_match_all과 협력하십시오

M66 2025-05-18

PHP 프로그래밍에서는 종종 문자열에서 복잡한 일치 및 교체 작업을 수행해야합니다. preg_match_allpreg_replace_callback_array는 특히 복잡한 패턴 일치 및 교체를 처리 할 때이 기능을 구현하는 데 도움이되는 두 가지 매우 유용한 기능입니다. 이 기사는이 두 기능을 조합하여 사용하는 방법과이를 통해 추출 및 교체 작업을 구현하는 방법을 자세히 소개합니다.

1. preg_match_all 소개

preg_match_all은 PHP에서 글로벌 정규식 일치를 수행하는 데 사용되는 함수입니다. 문자열을 스캔하고 정규 표현식과 일치하는 모든 일치를 반환합니다. 이 함수에 의해 반환 된 결과는 일반적으로 모든 일치하는 문자열을 포함하는 다차원 배열입니다.

 $pattern = '/\bhttps?:\/\/[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+\b/';
$string = "Visit https://example.com or http://test.com for more information.";
preg_match_all($pattern, $string, $matches);
print_r($matches);

위의 코드는 문자열의 모든 URL과 일치합니다.

2. preg_replace_callback_array 소개

preg_replace_callback_array는 여러 정규 표현식과 일치하고 각 정규 표현식에 대해 다른 콜백 함수를 지정할 수있는 강력한 기능입니다. 이를 통해 유연한 문자열 교체가 가능합니다.

 $patterns = [
    '/\d+/' => function($matches) {
        return $matches[0] * 2;  // 숫자를 곱하십시오2
    },
    '/[a-zA-Z]+/' => function($matches) {
        return strtoupper($matches[0]);  // 편지를 자본으로 전환하십시오
    }
];

$string = "The quick 3 brown 5 foxes";
echo preg_replace_callback_array($patterns, $string);

이 코드는 문자열의 숫자를 곱하고 문자를 대문자로 변환합니다.

3. PREG_MATCH_ALLPREG_REPLACE_CALLBACK_ARRAY를 결합하여 추출 및 교체를 달성합니다.

실제 응용 분야에서는 먼저 특정 콘텐츠를 추출한 다음 필요에 따라 교체해야합니다. 이 기능은 preg_match_allpreg_replace_callback_array를 결합하여 쉽게 구현할 수 있습니다.

한 텍스트에서 모든 URL을 추출하고 해당 URL의 도메인 이름을 M66.net 으로 바꾸어야한다고 가정하십시오.

1 단계 : preg_match_all을 사용하여 URL을 추출하십시오

먼저 preg_match_all을 사용하여 모든 URL을 추출 할 수 있습니다.

 $pattern = '/https?:\/\/([a-zA-Z0-9-]+\.[a-zA-Z0-9-]+)/';
$string = "Check out https://example.com and http://test.com for more information.";
preg_match_all($pattern, $string, $matches);
print_r($matches);

이 코드는 모든 URL 도메인 이름 부분 ( example.comtest.com )을 추출합니다.

2 단계 : preg_replace_callback_array를 사용하여 URL 도메인 이름을 대체합니다.

다음으로, 우리는 preg_replace_callback_array를 사용하여 추출 된 도메인 이름 부분을 대체합니다. 콜백 함수의 도메인 이름을 m66.net 으로 바꿀 수 있습니다.

 $patterns = [
    '/https?:\/\/([a-zA-Z0-9-]+\.[a-zA-Z0-9-]+)/' => function($matches) {
        // 대체하십시오 m66.net 도메인 이름
        return str_replace($matches[1], 'm66.net', $matches[0]);
    }
];

$string = "Check out https://example.com and http://test.com for more information.";
$result = preg_replace_callback_array($patterns, $string);
echo $result;

이 코드는 텍스트의 모든 URL 도메인 이름을 M66.net 으로 대체합니다. 예 : https://example.com은 https://m66.net 으로 대체됩니다.

4. 샘플 코드를 완료하십시오

다음은 preg_match_allpreg_replace_callback_array를 결합한 전체 예제 코드입니다. URL을 추출하고 m66.net 으로 도메인 이름을 대체 할 수 있습니다.

 <?php
// 모두 추출하십시오 URL 并替换도메인 이름
$pattern = '/https?:\/\/([a-zA-Z0-9-]+\.[a-zA-Z0-9-]+)/';
$string = "Check out https://example.com and http://test.com for more information.";

// 발췌 URL
preg_match_all($pattern, $string, $matches);
print_r($matches);

// 替换도메인 이름
$patterns = [
    '/https?:\/\/([a-zA-Z0-9-]+\.[a-zA-Z0-9-]+)/' => function($matches) {
        return str_replace($matches[1], 'm66.net', $matches[0]);
    }
];

// 문자열을 교체하십시오 URL 도메인 이름
$result = preg_replace_callback_array($patterns, $string);
echo $result;
?>

5. 요약

preg_match_allpreg_replace_callback_array를 결합하면 먼저 필요한 문자열 컨텐츠를 추출한 다음 이러한 컨텐츠에서 사용자 정의 대체 작업을 수행 할 수 있습니다. 이 방법은 매우 유연하며 다양한 복잡한 문자열 처리 작업에 적용 할 수 있습니다.

정규 표현식을 사용하여 텍스트를 처리 할 때 특히 URL 및 이메일 주소와 같은 비교적 고정 된 형식으로 텍스트를 처리 할 때 다양한 추출 및 교체 작업을보다 효율적으로 완료 할 수 있습니다.