Aktueller Standort: Startseite> Neueste Artikel> Was sind die praktischen Tipps für die STRCSPN -Funktion bei der Verarbeitung von CSV -Dateidaten?

Was sind die praktischen Tipps für die STRCSPN -Funktion bei der Verarbeitung von CSV -Dateidaten?

gitbox 2025-09-21

Einführung in die STRCSPN -Funktion

Die STRCSPN -Funktion ist eine String -Verarbeitungsfunktion in PHP, die hauptsächlich zur Berechnung der Position des ersten angegebenen Zeichens in einer Zeichenfolge verwendet wird. Der Prototyp dieser Funktion ist:

 <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 ist die Zeichenfolge, die überprüft wird.

  • $ mask ist eine Zeichenfolge, die alle Zeichen enthält, die ausgeschlossen werden müssen.

Der von der STRCSPN -Funktion zurückgegebene Wert ist die erste Position in $ String , die jedem Zeichen in $ mask entspricht. Wenn es keine Übereinstimmung gibt, wird die Länge der Zeichenfolge zurückgegeben.

Bei der Arbeit mit CSV -Dateien müssen wir normalerweise Daten aus jeder Zeile extrahieren, und CSV -Dateien enthalten häufig Grenzwerte (wie Kommas oder Newlines), und der Feldinhalt kann spezielle Zeichen oder Zitate enthalten. Zu diesem Zeitpunkt kann STRCSPN uns helfen, diese Zeichen effektiv zu lokalisieren und zu verarbeiten.

Anwendung in der CSV -Dateiverarbeitung

CSV -Dateiformate enthalten normalerweise Komma -Separatoren, Zeilenpausen und Felder, die zitiert werden können. Bei der Verarbeitung dieser Dateien müssen der Trennzeichen und der Feldinhalt klar unterschieden werden, und die STRCSPN -Funktion kann verwendet werden, um unregelmäßige Zeichen im Feld zu finden, um sicherzustellen, dass die Daten während des Parsens korrekt geteilt werden können.

Beispiel 1: Neulinien erkennen und überspringen

Bei der Arbeit mit CSV -Dateien ist es manchmal erforderlich, Felder oder Zeilen mit Neulinen zu überspringen. STRCSPN kann verwendet werden, um den ersten neuen Charakter zu finden und ihn zu überspringen.

 <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">// Entfernen Sie die Linienbrüche am Ende der Linie</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">// Finden Sie Newline -Standorte</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$pos</span></span><span> &gt; </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-comment">// Verarbeitungsdaten</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>

In diesem Beispiel wird STRCSPN verwendet, um die erste Position des Newline -Zeichens zu finden und dann die Felddaten über Substr zu extrahieren und zu verarbeiten.

Beispiel 2: Überspringen Sie den Komma -Separator

Bei der Verarbeitung von CSV -Daten können wir auf Felder mit Anführungszeichen stoßen, und der Feldinhalt kann im Inneren Kommas enthalten. Durch die Verwendung von STRCSPN können wir diese Zeichen überspringen und sicherstellen, dass wir die Daten an der richtigen Stelle teilen.

 <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">// Finden Sie die erste Kommasposition, die sich nicht außerhalb der Zitate befindet</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> &gt; </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">// Das erste Feld extrahieren</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>

In diesem Beispiel findet STRCSPN den Ort des ersten Kommas, der uns hilft, das erste Feld in der CSV -Datei zu extrahieren und eine falsche Segmentierung zu vermeiden.

Beispiel 3: Umgangszahlen Felder

In einer CSV -Datei können Felder Kommas oder andere Sonderzeichen enthalten. Wenn diese Felder von Zitaten umgeben sind, müssen wir sicherstellen, dass diese Felder richtig analysiert werden. STRCSPN kann verwendet werden, um Zeichen in nicht zitierten Teilen in einem Feld zu finden, wodurch die Felddaten korrekt analysiert werden.

 <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> &lt; </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">// Finden Sie die Position des nächsten Zitats</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">// Felder extrahieren, die von Anführungszeichen umgeben sind</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">// Finden Sie den nächsten Trennzeichen oder die 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>

Hier wird STRCSPN verwendet, um das Trennzeichen zu überspringen und die Daten bei der Verarbeitung von Feldern ordnungsgemäß aufzuteilen.

Zusammenfassen

Die STRCSPN -Funktion ist bei der Verarbeitung von CSV -Dateidaten sehr nützlich. Es hilft uns, bestimmte Zeichen wie Newlines, Kommas oder Zitate usw. zu finden und zu überspringen, um sicherzustellen, dass wir Felddaten genau segmentieren können. Unabhängig davon, ob es sich um Felder handelt, die Newlines enthalten oder Komma -Separatoren überspringen, bietet STRCSPN eine wirksame Unterstützung. Durch ordnungsgemäße Verwendung von STRCSPN können wir komplexe CSV -Daten leichter verarbeiten und häufige Parsingfehler vermeiden.