La fonction STRCSPN est une fonction de traitement de chaîne dans PHP, qui est principalement utilisée pour calculer l'emplacement du premier jeu de caractères spécifié dans une chaîne. Le prototype de cette fonction est:
<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 est la chaîne à vérifier.
$ Mask est une chaîne contenant tous les caractères qui doivent être exclus.
La valeur renvoyée par la fonction STRCSPN est la première position dans $ String qui correspond à n'importe quel caractère dans $ mask . S'il n'y a pas de correspondance, la longueur de la chaîne est retournée.
Lorsque vous travaillez avec des fichiers CSV, nous devons généralement extraire des données de chaque ligne, et les fichiers CSV contiennent souvent des délimiteurs (tels que des virgules ou des nouvelles lignes), et le contenu du champ peut contenir des caractères ou des devis spéciaux. À l'heure actuelle, STRCSPN peut nous aider à localiser et à traiter efficacement ces caractères.
Les formats de fichiers CSV contiennent généralement des séparateurs de virgules, des pauses de ligne et des champs qui peuvent être cités. Lors du traitement de ces fichiers, le contenu du séparateur et du champ doit être clairement distingué, et la fonction STRCSPN peut être utilisée pour trouver des caractères irréguliers sur le terrain pour s'assurer que les données peuvent être correctement divisées pendant l'analyse.
Lorsque vous travaillez avec des fichiers CSV, il est parfois nécessaire de sauter des champs ou des lignes contenant NewLines. STRCSPN peut être utilisé pour trouver le premier caractère Newline et le sauter.
<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">// Retirez les pauses de ligne à la fin de la ligne</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">// Trouver les emplacements de 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">// Traitement des données</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>Dans cet exemple, StrcSpn est utilisé pour trouver la première position du caractère Newline, puis extraire et traiter les données de champ via substr .
Lors du traitement des données CSV, nous pouvons rencontrer des champs avec des devis et le contenu du champ peut contenir des virgules à l'intérieur. L'utilisation de STRCSPN peut nous aider à ignorer ces caractères et à nous assurer que nous divisez les données au bon endroit.
<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">// Trouvez la première position de virgule qui n'est pas en dehors des citations</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">// Extraire le premier champ</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>Dans cet exemple, STRCSPN trouve l'emplacement de la première virgule, qui nous aide à extraire le premier champ dans le fichier CSV et évite une segmentation incorrecte.
Dans un fichier CSV, les champs peuvent contenir des virgules ou d'autres caractères spéciaux, et si ces champs sont entourés de citations, nous devons nous assurer que ces champs sont correctement analysés. STRCSPN peut être utilisé pour trouver des caractères dans des pièces non citées dans un champ, en analysant ainsi correctement les données sur le terrain.
<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">// Trouvez la position de la citation suivante</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">// Extrait des champs entourés de guillemets</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">// Trouvez le prochain séparateur ou 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>Ici, STRCSPN est utilisé pour sauter le séparateur et aider à diviser correctement les données lors du traitement des champs cités.
La fonction STRCSPN est très utile lors du traitement des données de fichiers CSV. Il nous aide à trouver et à sauter des caractères spécifiques tels que les nouvelles lignes, les virgules ou les citations, etc., garantissant que nous pouvons segmenter avec précision les données sur le terrain. Qu'il s'agisse de champs contenant NewLines ou de sauter des séparateurs de virgules, StrcSpn fournit un support efficace. En utilisant correctement STRCSPN , nous pouvons plus facilement traiter les données CSV complexes et éviter les erreurs d'analyse courantes.