STRCSPN 함수는 PHP의 문자열 처리 함수이며, 주로 문자열에서 설정된 첫 번째 지정된 문자의 위치를 계산하는 데 주로 사용됩니다. 이 기능의 프로토 타입은 다음과 같습니다.
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcspn</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">string</span></span><span> </span><span><span class="hljs-variable">$mask</span></span><span> )
</span></span>$ string은 확인할 문자열입니다.
$ 마스크는 제외 해야하는 모든 문자를 포함하는 문자열입니다.
strcspn 함수에 의해 반환 된 값은 $ string 의 첫 번째 위치입니다. $ mask 의 모든 문자와 일치합니다. 일치하지 않으면 문자열의 길이가 반환됩니다.
CSV 파일로 작업 할 때는 일반적으로 각 라인에서 데이터를 추출해야하며 CSV 파일에는 종종 구분자 (예 : 쉼표 또는 신생)가 포함되어 있으며 필드 내용에는 특수 문자 또는 따옴표가 포함될 수 있습니다. 현재 STRCSPN은 이러한 캐릭터를 효과적으로 찾아 처리하는 데 도움이 될 수 있습니다.
CSV 파일 형식에는 일반적으로 쉼표 분리기, 라인 브레이크 및 인용 할 수있는 필드가 포함됩니다. 이러한 파일을 처리 할 때 분리기 및 필드 내용을 명확하게 구별해야하며, STRCSPN 기능을 사용하여 현장에서 불규칙한 문자를 찾아 구문 분석 중에 데이터를 올바르게 나눌 수 있도록 할 수 있습니다.
CSV 파일로 작업 할 때는 때때로 신생을 포함하는 필드 또는 라인을 건너 뛰는 것이 필요합니다. strcspn은 첫 번째 Newline 캐릭터를 찾고 건너 뛰는 데 사용될 수 있습니다.
<span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'data.csv'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>); </span><span><span class="hljs-comment">// 라인 끝에서 라인 파손을 제거하십시오</span></span><span>
</span><span><span class="hljs-variable">$pos</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-string">"\n"</span></span><span>); </span><span><span class="hljs-comment">// Newline 위치를 찾으십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$pos</span></span><span> > </span><span><span class="hljs-number">0</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-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$pos</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
}
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span></span>이 예에서 STRCSPN은 Newline 문자의 첫 번째 위치를 찾은 다음 Substr을 통해 필드 데이터를 추출하고 처리하는 데 사용됩니다.
CSV 데이터를 처리 할 때는 견적이있는 필드를 만나고 필드 내용에는 내부에 쉼표가 포함될 수 있습니다. strcspn을 사용하면 이러한 문자를 건너 뛰고 데이터를 올바른 위치에 분할 할 수 있습니다.
<span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'data.csv'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-comment">// 따옴표 외부에없는 첫 번째 쉼표 위치를 찾으십시오.</span></span><span>
</span><span><span class="hljs-variable">$pos</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-string">','</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$pos</span></span><span> > </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-variable">$field</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$pos</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">$field</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
}
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span></span>이 예에서 STRCSPN은 첫 번째 쉼표의 위치를 찾아 CSV 파일에서 첫 번째 필드를 추출하고 잘못된 세분화를 피할 수 있도록 도와줍니다.
CSV 파일에 필드에는 쉼표 또는 기타 특수 문자가 포함되어있을 수 있으며,이 필드가 인용문으로 둘러싸인 경우 이러한 필드를 올바르게 구문 분석해야합니다. STRCSPN은 필드에서 인용되지 않은 부품의 문자를 찾는 데 사용될 수 있으므로 필드 데이터를 올바르게 구문 분석 할 수 있습니다.
<span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'data.csv'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>);
</span><span><span class="hljs-variable">$start</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$start</span></span><span> < </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>)) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$line</span></span><span>[</span><span><span class="hljs-variable">$start</span></span><span>] === </span><span><span class="hljs-string">'"'</span></span><span>) {
</span><span><span class="hljs-comment">// 다음 인용문의 위치를 찾으십시오</span></span><span>
</span><span><span class="hljs-variable">$end</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-string">'"'</span></span><span>, </span><span><span class="hljs-variable">$start</span></span><span> + </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$end</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-comment">// 인용 자국으로 둘러싸인 필드를 추출합니다</span></span><span>
</span><span><span class="hljs-variable">$field</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-variable">$start</span></span><span> + </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-variable">$end</span></span><span> - </span><span><span class="hljs-variable">$start</span></span><span> - </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$field</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-variable">$start</span></span><span> = </span><span><span class="hljs-variable">$end</span></span><span> + </span><span><span class="hljs-number">1</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-comment">// 다음 분리기 또는 Newline을 찾으십시오</span></span><span>
</span><span><span class="hljs-variable">$pos</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strcspn</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-string">",\n"</span></span><span>, </span><span><span class="hljs-variable">$start</span></span><span>);
</span><span><span class="hljs-variable">$field</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>, </span><span><span class="hljs-variable">$start</span></span><span>, </span><span><span class="hljs-variable">$pos</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$field</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-variable">$start</span></span><span> += </span><span><span class="hljs-variable">$pos</span></span><span> + </span><span><span class="hljs-number">1</span></span><span>;
}
}
}
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span></span>여기서 strcspn은 분리기를 건너 뛰고 인용 된 필드를 처리 할 때 데이터를 올바르게 분할하는 데 사용됩니다.
STRCSPN 기능은 CSV 파일 데이터를 처리 할 때 매우 유용합니다. Newlines, Commas 또는 따옴표 등과 같은 특정 문자를 찾고 건너 뛰면 필드 데이터를 정확하게 분할 할 수 있습니다. Newlines가 포함 된 필드를 처리하든 쉼표 분리기를 건너 뛰는지 여부에 관계없이 STRCSPN은 효과적인 지원을 제공합니다. STRCSPN을 올바르게 사용하면 복잡한 CSV 데이터를보다 쉽게 처리하고 일반적인 구문 분석 오류를 피할 수 있습니다.