PHP 는 chrome 폼 요청 데 이 터 를 인터페이스 에 사용 할 json 데이터 로 변환 합 니 다.
최근 에 구형 프로그램 이전 을 하고 있 습 니 다.낡은 구 조 는 일반적인 MVC 모델 이 고 새로운 구 조 는 모두 restful 구조 로 바 뀌 었 습 니 다.
리 모델 링 데 이 터 는 일치 하지만 요청 구조 가 일치 하지 않 기 때문에 새 버 전의 요청 은 모두 json 형식 으로 제출 되 었 습 니 다.테스트 를 편리 하 게 하기 위해 브 라 우 저 에서 개발 자 도 구 를 직접 열 고 요청 내용 을 복사 한 다음 에 수 동 으로 json 형식 으로 바 꾸 었 습 니 다.이전 에는 데이터 양 이 비교적 적 었 기 때문에 테스트 할 때 불편 한 상황 을 잠시 발견 하지 못 했 습 니 다.그런데 오늘 데이터 가 비교적 많은 상황 을 만 났 습 니 다.그래서 저 는 왜 변환 프로그램 을 쓰 지 않 았 을까요?
그 자체 가 프로그램의 취 지 는 업무 효율 을 향상 시 키 는 것 이 고 이것 도 제 가 반성 이 부족 한 부분 이기 때문에 이 글 을 써 서 기록 하 는 것 입 니 다.
코드
쓸데없는 말 은 그만 하고 코드 를 직접 올 리 면 부족 한 점 이 있 으 면 나중에 시간 이 있 으 면 다시 연구 하 자.
<?php
//
$f = './t.data';
$content = file_get_contents($f);
$rows = explode("
", $content);
$data = [];
foreach ($rows as $row) {
// key value
$rowInfo = explode(':', $row);
$keyInfo = array_shift($rowInfo);
$value = trim(implode(':', $rowInfo));
$keyArray = getCharArray($keyInfo);
$keyItem = '';
$keys = [];
foreach ($keyArray as $char) {
if ($char == '[') {
$keys[] = $keyItem;
$keyItem = '';
} elseif ($char == ']') {
continue;
} else {
$keyItem .= $char;
}
}
$keys[] = $keyItem;
//
$keys = array_map(function ($item) {
return strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', $item));
}, $keys);
$firstKey = array_shift($keys);
if (empty($keys)) {
$data[$firstKey] = $value;
} else {
if (!isset($data[$firstKey])) {
$data[$firstKey] = [];
}
$item = &$data[$firstKey];
while (!empty($keys)) {
$currentKey = array_shift($keys);
if (!isset($item[$currentKey])) {
$item[$currentKey] = [];
}
$item = &$item[$currentKey];
}
$item = $value;
unset($item);
}
}
echo json_encode($data, JSON_UNESCAPED_UNICODE);
/**
*
*
* @param string $string
*
* @return array
*/
function getCharArray(string $string)
{
$strlen = mb_strlen($string);
$i = 0;
$charArray = [];
while ($i < $strlen) {
$charArray[] = mb_substr($string, $i, 1);
$i++;
}
return $charArray;
}
예제 파일:
thumbnail: https://avatar-static.segmentfault.com/393/562/3935623170-1140000000142909
name: 101
description:
sidebar: SegmentFault 101 。 , , , 。 , 。
admins[0][user_id]: 1030000000094051
admins[0][isNoticeSite]: 0
admins[0][isNoticeMail]: 0
admins[1][user_id]: 1030000000091305
admins[1][isNoticeSite]: 0
admins[1][isNoticeMail]: 0
admins[2][user_id]: 1030000000146026
admins[2][isNoticeSite]: 0
admins[2][isNoticeMail]: 0
admins[3][user_id]: 1030000000141721
admins[3][isNoticeSite]: 0
admins[3][isNoticeMail]: 0
admins[4][user_id]: 1030000000142354
admins[4][isNoticeSite]: 0
admins[4][isNoticeMail]: 0
admins[5][user_id]: 1030000000144141
admins[5][isNoticeSite]: 0
admins[5][isNoticeMail]: 0
admins[6][user_id]: 1030000000091353
admins[6][isNoticeSite]: 0
admins[6][isNoticeMail]: 0
출력 json
{
"thumbnail": " https:\/\/avatar-static.segmentfault.com\/393\/562\/3935623170-1140000000142909",
"name": " 101 ",
"description": " ",
"sidebar": " SegmentFault 101 。 , , , 。 , 。",
"admins": [
{
"user_id": " 1030000000094051",
"is_notice_site": " 0",
"is_notice_mail": " 0"
},
{
"user_id": " 1030000000091305",
"is_notice_site": " 0",
"is_notice_mail": " 0"
},
{
"user_id": " 1030000000146026",
"is_notice_site": " 0",
"is_notice_mail": " 0"
},
{
"user_id": " 1030000000141721",
"is_notice_site": " 0",
"is_notice_mail": " 0"
},
{
"user_id": " 1030000000142354",
"is_notice_site": " 0",
"is_notice_mail": " 0"
},
{
"user_id": " 1030000000144141",
"is_notice_site": " 0",
"is_notice_mail": " 0"
},
{
"user_id": " 1030000000091353",
"is_notice_site": " 0",
"is_notice_mail": " 0"
}
]
}
PHP 가 chrome 폼 요청 데 이 터 를 인터페이스 로 변환 하 는 데 사용 되 는 json 데이터 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 PHP json 요청 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.