먼저 substr () 함수의 기본 사용법을 검토해 봅시다. substr () 함수의 함수는 지정된 위치에서 시작하여 길이를 지정하는 문자열의 서브 스트링을 반환하는 것입니다. 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$start</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>$ 문자열 : 보류중인 문자열.
$ 시작 : 시작 위치, 음수 숫자는 문자열 끝에서 시작하는 계산을 나타냅니다.
$ 길이 : 옵션 매개 변수, 기판의 길이를 나타냅니다. 생략하면 $ 시작 부터 문자열의 끝까지 부분이 추출됩니다.
JSON (JavaScript 객체 표기법)은 프론트 엔드 및 백엔드 데이터 상호 작용에 종종 사용되는 가벼운 데이터 교환 형식입니다. 일반적인 JSON 데이터 구조는 다음과 같습니다.
<span><span><span class="hljs-punctuation">{</span></span><span>
</span><span><span class="hljs-attr">"name"</span></span><span><span class="hljs-punctuation">:</span></span><span> </span><span><span class="hljs-string">"John"</span></span><span><span class="hljs-punctuation">,</span></span><span>
</span><span><span class="hljs-attr">"age"</span></span><span><span class="hljs-punctuation">:</span></span><span> </span><span><span class="hljs-number">30</span></span><span><span class="hljs-punctuation">,</span></span><span>
</span><span><span class="hljs-attr">"city"</span></span><span><span class="hljs-punctuation">:</span></span><span> </span><span><span class="hljs-string">"New York"</span></span><span>
</span><span><span class="hljs-punctuation">}</span></span><span>
</span></span>JSON 데이터에는 일반적으로 키가 문자열 인 키 값 쌍의 구조가 포함되어 있으며 값은 문자열, 숫자, 부울, 배열 또는 중첩 된 객체 일 수 있습니다. JSON 문자열에서 필드 값을 추출하면 일반적으로 JSON_DECODE () 함수를 사용하여 PHP 객체 또는 연관 배열로 구문 분석 한 다음 해당 키에 직접 액세스합니다.
다음 JSON 문자열이 있다고 가정합니다.
<span><span><span class="hljs-variable">$json_data</span></span><span> = </span><span><span class="hljs-string">'{"name": "John", "age": 30, "city": "New York"}'</span></span><span>;
</span></span>데이터 "이름": "John"을 추출하려면 이론적으로 substr ()를 사용하여 문자열의 일부를 추출 할 수 있습니다. 예를 들어:
<span><span><span class="hljs-variable">$substring</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$json_data</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$substring</span></span><span>; </span><span><span class="hljs-comment">// 산출: {"name": "John"}</span></span><span>
</span></span>이 방법은 JSON 문자열의 일부를 추출하지만 몇 가지 문제가 있습니다. JSON 데이터는 구조화 된 데이터 형식이며, substr ()는 위치를 기반으로 문자열을 가로 채므로 JSON의 다양한 요소들 사이의 레벨과 관계를 이해하는 것은 불가능합니다. substr ()를 사용할 때는 복잡한 JSON 데이터 또는 동적으로 변화하는 JSON 구조에 대해 매우 신뢰할 수없는 위치와 길이를 수동으로 계산해야합니다.
구조 구조 할 수 없음 : substr ()는 바이트 만 작동 할 수 있으며 JSON 데이터의 실제 구조를 구문 분석 할 수 없습니다. JSON의 키와 값에는 다양한 특수 문자 또는 탈출 문자가 포함될 수 있으며, 그 중 어느 것도 간단한 차단으로 효과적으로 처리 할 수 없습니다.
융통성 불가능 : JSON 데이터 구조가 변경되면 문자열의 시작 위치와 길이를 수동으로 계산하면 번거롭고 오류가 발생합니다.
오류 처리 부족 : substr ()는 대상 문자열이 예상 JSON 형식을 충족하는지 확인하지 않으므로 오류가 발생할 수 있습니다.
JSON 데이터를 처리하는 올바른 방법은 PHP의 내장 기능 JSON_DECODE ()를 사용하여 JSON 문자열을 PHP 변수로 구문 분석하는 것입니다. 이를 통해 JSON 데이터의 개별 필드에 쉽게 액세스 할 수 있습니다. 예를 들어:
<span><span><span class="hljs-variable">$json_data</span></span><span> = </span><span><span class="hljs-string">'{"name": "John", "age": 30, "city": "New York"}'</span></span><span>;
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">json_decode</span></span><span>(</span><span><span class="hljs-variable">$json_data</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// 연관 배열로 변환합니다</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$data</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>]; </span><span><span class="hljs-comment">// 산출: John</span></span><span>
</span></span>JSON의 일부만 추출 해야하는 경우 substr () 에 의존하지 않고 해당 키에 액세스하여 수행 할 수 있습니다. 이것은 더 안전 할뿐만 아니라 더 관리하기 쉽습니다.
substr () 함수는 경우에 따라 JSON 문자열에서 부품을 추출하기 위해 어떤 경우에는 JSON 데이터를 처리하는 데 가장 적합한 도구는 아닙니다. substr ()를 사용하면 특히 JSON 데이터 구조가 변경 될 때 융통성이없는 코드와 오류가 발생할 수 있습니다. JSON 데이터를 처리 할 때 가장 권장되는 가장 권장되는 방법은 JSON_DECODE ()를 사용하여 JSON 문자열을 구문 분석하고 배열 또는 객체를 통해 필요한 데이터에 액세스하는 것입니다.
JSON 문자열이 조작되는 시나리오의 경우 JSON_DECODE () 및 JSON_ENCODE ()를 조합하여 JSON 데이터를보다 안전하고 안정적으로 추출하고 수정할 수 있습니다.