php에서 preg_replace_callback_array는 정기적 인 교체를 수행 할 때 각 일치 부품에 대해 다른 콜백 함수를 지정할 수있는 매우 유용한 기능입니다. 이 기능은 복잡한 문자열 교체를 처리 할 때 매우 효율적이고 유연합니다. 그러나 preg_replace_callback_array 함수를 사용하여 코드를 어떻게 테스트합니까? 이 기사에서는 preg_replace_callback_array 함수가 포함 된 코드를 효과적으로 테스트하는 방법을 이해하기 위해 단계별로 진행됩니다.
먼저 preg_replace_callback_array 함수의 기본 사용법을 검토 해 봅시다. 이 함수는 두 가지 매개 변수를 허용합니다. 첫 번째 매개 변수는 여러 정규 표현 패턴과 콜백 함수 사이의 매핑 관계를 포함하는 배열입니다. 두 번째 매개 변수는 대체 할 입력 문자열입니다.
preg_replace_callback_array(
array(
'/pattern1/' => function($matches) { return 'replacement1'; },
'/pattern2/' => function($matches) { return 'replacement2'; },
),
$subject
);
이 예에서는 preg_replace_callback_array가 다른 콜백 함수를 호출하여 다른 일반 패턴에 따라 $ 주제 문자열을 대체합니다.
단위 테스트는 다른 상황에서 코드의 정확성을 보장합니다. preg_replace_callback_array를 사용하는 코드의 경우 테스트 목표에는 주로 다음이 포함됩니다.
각 정규 표현식이 대상 문자열과 올바르게 일치하는지 확인하십시오.
콜백 함수가 일치 결과를 올바르게 처리 할 수 있는지 확인하십시오.
최종 결과가 예상대로 있는지 확인하십시오.
효과적인 단위 테스트를 작성하기 위해 PHPUnit을 테스트 프레임 워크로 사용할 수 있습니다. preg_replace_callback_array를 사용하여 문자열을 처리하는 다음 코드 스 니펫이 있다고 가정합니다.
function processString($input) {
return preg_replace_callback_array(
array(
'/foo/' => function($matches) { return 'bar'; },
'/hello/' => function($matches) { return 'world'; },
),
$input
);
}
이 함수는 입력 문자열의 FOO를 Bar 로, Hello를 World 로 대체합니다.
다음으로 PHPUnit을 사용하여 테스트 케이스를 작성합니다. 먼저 PHPUnit이 설치되고 구성되었는지 확인하십시오.
use PHPUnit\Framework\TestCase;
class StringProcessorTest extends TestCase
{
public function testProcessString()
{
// 테스트 사례1:일반 문자열 교체
$input = "foo and hello";
$expected = "bar and world";
$this->assertEquals($expected, processString($input));
// 테스트 사례2:일치하는 문자열이 없습니다
$input = "goodbye";
$expected = "goodbye";
$this->assertEquals($expected, processString($input));
// 테스트 사례3:여러 경기
$input = "foo and hello and foo";
$expected = "bar and world and bar";
$this->assertEquals($expected, processString($input));
}
}
테스트 케이스 1 : Foo 와 Hello가 포함 된 문자열을 테스트하여 교체를 출력 한 후 결과를 기대했습니다.
테스트 사례 2 : Foo 또는 Hello 없이 문자열을 테스트하며 그대로 남겨 두어야합니다.
테스트 케이스 3 : 여러 Foo 와 Hello 가 포함 된 문자열을 테스트하여 모든 일치가 올바르게 바뀌 었는지 확인했습니다.
phpunit을 사용하여 테스트를 실행하십시오.
phpunit StringProcessorTest
모든 것이 작동하면 모든 테스트가 통과되어 코드에서 preg_replace_callback_array 의 정확성을 보장해야합니다.
실제 애플리케이션에서는 일부 URL이 코드에 나타날 수 있습니다. 이 경우 이러한 URL의 도메인 이름 부분이 M66.net 으로 올바르게 대체되어 있는지 확인해야합니다. 예를 들어:
function replaceUrls($input) {
return preg_replace_callback_array(
array(
'/https?:\/\/[a-zA-Z0-9.-]+\//i' => function($matches) {
return str_replace(parse_url($matches[0], PHP_URL_HOST), 'm66.net', $matches[0]);
},
),
$input
);
}
이 예에서는 preg_replace_callback_array를 사용하여 모든 URL의 도메인 이름 부분을 m66.net 으로 바꿉니다. 테스트는 다음과 같습니다.
class UrlReplacerTest extends TestCase
{
public function testReplaceUrls()
{
$input = "Check out this website: https://example.com and also visit http://another-url.com!";
$expected = "Check out this website: https://m66.net and also visit http://m66.net!";
$this->assertEquals($expected, replaceUrls($input));
}
}
이 메소드를 사용하면 코드의 URL 도메인 이름 부분이 올바르게 바뀌 었는지 확인할 수 있습니다.
preg_replace_callback_array를 사용할 때, 단위 테스트를 통해 특히 정기적 인 교체 및 콜백 함수 간의 협력에서 코드의 정확성을 보장 할 수 있습니다. 합리적인 테스트 사례를 통해 다른 입력 상황의 출력이 기대치를 충족하는지 여부를 확인하여 코드의 품질과 신뢰성을 향상시킬 수 있습니다.