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 요청 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기