데이터 청소 및 표준화는 웹 크롤러를 개발할 때 매우 중요한 작업입니다. 특히 여러 소스에서 HTML 테이블, JSON 인터페이스 또는 API 데이터를 추출해야 할 때 다른 필드 키 이름에 대한 사례가 없을 수 있습니다. 후속 데이터 처리 및 논리적 판단을 용이하게하려면 배열의 키 이름을 모든 소문자 또는 모든 대문자가되도록 통합해야합니다.
php에서 array_change_key_case ()는 이 작업을 신속하게 완료하는 데 도움이되는 효율적이고 실용적인 기능입니다. 이 기사는 실제 웹 크롤러 시나리오에서 시작 하여이 기능의 사용과 크롤러 데이터 처리에서 효율적인 응용 프로그램을 소개합니다.
array_change_key_case(array $array, int $case = CASE_LOWER): array
$ 배열 : 원래 입력 배열;
$ CASE : 대상 사례를 지정하고 선택적 값은 Case_Lower (기본값) 또는 Case_Upper 입니다.
이 함수는 키 이름이 지정된 케이스로 변환 된 새 배열을 반환합니다.
웹 사이트에서 JSON 인터페이스를 가져 와서 다음 구조의 배열을 얻는다 고 가정 해보십시오.
$data = [
"ProductID" => 123,
"ProductName" => "USB Cable",
"PRICE" => 9.99,
"currency" => "USD"
];
보시다시피, 이러한 주요 이름의 경우는 매우 일관성이 없습니다. 이 유형의 데이터를 처리 할 때 $ data [ 'price']를 직접 사용하면 실제 키가 가격 이기 때문에 값을 얻을 수 없습니다. 이 문제를 해결하기 위해 Array_change_key_case ()를 사용할 수 있습니다.
$normalizedData = array_change_key_case($data, CASE_LOWER);
echo $normalizedData['price']; // 산출:9.99
이런 식으로, 우리는 통일 된 방식으로 키 이름을 처리 할 수 있으며 더 이상 다른 상류 및 하위 사례에 대해 여러 판단 지점을 작성할 필요가 없습니다.
크롤링 된 데이터가 중첩 배열 인 경우 : 예를 들어
$data = [
"ProductID" => 123,
"Details" => [
"Manufacturer" => "XYZ Corp",
"Warranty" => "1 year"
]
];
현재 Array_change_key_case ()는 최상위 키 이름 만 처리하며 하위 배열을 재귀 적으로 처리하지 않습니다. 키 이름을 재귀 적으로 통합 해야하는 경우 다음과 같은 사용자 정의 기능을 사용할 수 있습니다.
function array_change_key_case_recursive(array $array, int $case = CASE_LOWER): array {
$result = [];
foreach ($array as $key => $value) {
$key = is_string($key) ? ($case === CASE_UPPER ? strtoupper($key) : strtolower($key)) : $key;
$result[$key] = is_array($value) ? array_change_key_case_recursive($value, $case) : $value;
}
return $result;
}
$normalizedData = array_change_key_case_recursive($data, CASE_LOWER);
echo $normalizedData['details']['manufacturer']; // 산출:XYZ Corp
Web Crawlers에서는 종종 JSON_DECODE ()를 사용하여 JSON 데이터를 가져 오며이 기능은 객체 또는 배열을 반환합니다. 키 이름 통합 작업을보다 쉽게 사용할 수 있도록 해독 할 때 연관 배열을 직접 반환하는 것이 좋습니다.
$json = file_get_contents("https://api.m66.net/data/products");
$data = json_decode($json, true); // 두 번째 매개 변수는입니다 true,연관 배열을 반환합니다
$normalizedData = array_change_key_case_recursive($data, CASE_LOWER);
이러한 방식으로, 처리 된 배열 구조는보다 일관되며 후속 현장 추출 및 논리적 판단을보다 쉽게 수행하는 것이 더 쉬울 것이다.
어레이 키 이름의 통합 된 사례는 웹 크롤러에서 특히 다중 소스 데이터를 병합, 검색, 매핑 또는 저장할 때 매우 실용적인 요구 사항입니다. PHP의 내장 Array_change_key_case () 는 재귀 구현을 통해 복잡한 데이터 구조를 쉽게 처리 할 수있는 효율적인 솔루션을 제공합니다.
실제 개발에서는이 기능을 도구 방법으로 캡슐화하고 모든 크롤러 모듈의 데이터 청소 단계에서 균일하게 사용하여 코드의 견고성과 유지 보수를 크게 향상시키는 것이 좋습니다. 한 줄의 코드 만 있으면 키 이름 케이스 문제를 쉽게 해결할 수 있습니다.