복잡한 텍스트 교체를 처리하기 위해 preg_replace_callback_array를 사용하는 경우 일반 콜백 기능에서 일치를 디버그하고 논리가 올바른지 여부를 결정해야합니다. PHP는 매우 실용적인 디버깅 기능을 제공합니다 : var_dump () 및 print_r () . 이 기사는 preg_replace_callback_array 에서이 두 기능을 사용하여 일반 콜백 로직을 디버깅하는 방법을 보여줍니다.
preg_replace_callback_array () 는 PHP 7.0 이상에서 제공하는 함수입니다. 정규 표현식 및 콜백 기능으로 구성된 연관 배열로 전달할 수 있습니다. 일치하는 텍스트를 가로 지르고 해당 콜백 함수에 따라 교체합니다.
preg_replace_callback_array(array $patterns_and_callbacks, string $subject, int $limit = -1, int &$count = null): string
preg_replace_callback 과 비교할 때 더 명확한 논리와 더 강한 확장 성으로 여러 정규 표현식 및 여러 콜백 기능을 처리 할 수 있습니다.
Markdown 스타일 링크와 사용자 정의 {{code}} 태그를 혼합하는 텍스트가 있다고 가정 해 봅시다. preg_replace_callback_array를 사용하여 균일하게 처리하려고합니다.
$text = '딸깍 하는 소리 [여기](https://m66.net) 세부 사항을 확인하십시오,또는 사용 {{print_name}} 변하기 쉬운。';
두 가지 패턴을 정의하고 해당 콜백 함수를 지정합니다.
$patterns = [
// 성냥 markdown 링크:[텍스트](URL)
'/\[(.*?)\]\((.*?)\)/' => function ($matches) {
echo "성냥到 markdown 링크:\n";
print_r($matches);
return '<a href="' . htmlspecialchars($matches[2]) . '">' . htmlspecialchars($matches[1]) . '</a>';
},
// 성냥 {{변하기 쉬운}} 형태
'/\{\{(.*?)\}\}/' => function ($matches) {
echo "성냥到변하기 쉬운标签:\n";
var_dump($matches);
$variableName = $matches[1];
// 模拟변하기 쉬운替换
$variables = [
'print_name' => '사용자 이름'
];
return isset($variables[$variableName]) ? $variables[$variableName] : '';
}
];
$result = preg_replace_callback_array($patterns, $text);
echo "\n최종 교체 결과:\n" . $result;
성냥到 markdown 링크:
Array
(
[0] => [여기](https://m66.net)
[1] => 여기
[2] => https://m66.net
)
성냥到변하기 쉬운标签:
array(2) {
[0]=>
string(17) "{{print_name}}"
[1]=>
string(10) "print_name"
}
최종 교체 결과:
딸깍 하는 소리 <a href="https://m66.net">여기</a> 세부 사항을 확인하십시오,또는 사용 사용자 이름 변하기 쉬운。
Print_r ()를 사용하여 명확한 구조가있는 출력 배열에 인간 읽기에 더 적합합니다.
Var_dump ()를 사용하여 데이터 유형 및 길이를 보는 것은 여러 데이터 구조를 처리 할 때 특히 유용합니다.
웹 페이지 출력 오염 정보 디버깅을 피하기 위해 CLI 또는 로그 파일에서 디버그하는 것이 좋습니다.
출력이 깔끔한 지 확인하기 위해 온라인으로 가기 전에 모든 디버그 진술을 제거하거나 주석하십시오.
preg_replace_callback_array는 강력한 멀티 모드 일반 교체 기능을 제공합니다. 디버깅 단계에서 var_dump () 및 print_r () 와 결합하면 일치하는 상황을 빠르게 이해하고 논리가 올바른지 확인하는 데 도움이됩니다. 이 디버깅 방법을 마스터하면 복잡한 텍스트 처리 작업을 처리하는 데있어 효율성을 크게 향상시킬 수 있습니다.