Inhaltsverzeichnis
Verständnis für das Format mit festem Breite
Verwenden von substr() , um Felder zu schneiden
Definieren einer Feldkarte zur Wiederverwendbarkeit
Handhabungskantenfälle
Lesen aus einer Datei
Bonus: Dynamisches Schema mit Offsets
Heim Backend-Entwicklung PHP-Tutorial Ein praktischer Leitfaden zum Analysieren von Daten mit fester Breite mit PHP-String-Slicing

Ein praktischer Leitfaden zum Analysieren von Daten mit fester Breite mit PHP-String-Slicing

Jul 26, 2025 am 09:50 AM
PHP Slicing Strings

Mit Substr () zum Schneiden nach Position ist trim (), um Leerzeichen zu entfernen und die Feldzuordnung zu kombinieren, die Kernmethode zum Analysieren von Daten mit festen Breite. 1. Definieren Sie die Position und Länge der Feldstart oder definieren Sie nur die Breite, um das Startbit nach dem Programm zu berechnen. 2. Verwenden Sie Substr ($ line, $ start, $ Länge), um den Feldinhalt zu extrahieren, und lassen Sie die Länge weg, um den verbleibenden Teil zu erhalten. 3. Auftragen Sie Trim (), um die Füllräume für jedes Feldergebnis zu löschen. 4. Implementieren Sie wiederverwendbare analytische Funktionen durch Schleifen und Schema -Arrays; 5. Kantenfälle wie die Fertigstellung, wenn die Leitungslänge nicht ausreicht, leere Linienausschnitte, fehlende Wertsatzstandwerte und Typüberprüfung; 6. Verwenden Sie Datei () für kleine Dateien, wenn Sie Dateien lesen, um fopen () zu verwenden, um Zeile für die Zeile zu streamen, um den Speicherüberlauf zu verhindern. Diese Methode erfordert keine externen Bibliotheken, ist effizient und leicht zu warten.

Ein praktischer Leitfaden zum Analysieren von Daten mit fester Breite mit PHP-String-Slicing

Das Parsen mit festen Breitendaten ist eine häufige Aufgabe, wenn es um Legacy-Systeme, Regierungsberichte oder Datenexporte für flache Dateien geht, bei denen Felder nicht von Grenzwerten wie Kommas oder Registerkarten getrennt werden. Stattdessen tritt jedes Feld eine vordefinierte Anzahl von Zeichen in einer Zeile auf. Die Fachfunktionen von PHP - insbesondere substr() - machen diese Aufgabe unkompliziert und zuverlässig.

Ein praktischer Leitfaden zum Analysieren von Daten mit fester Breite mit PHP-String-Slicing

Hier erfahren Sie, wie man es richtig macht.


Verständnis für das Format mit festem Breite

In einer Festbreitungsdatei ist jeder Datensatz (Zeile) strukturiert, so dass bestimmte Spalten bestimmte Felder darstellen. Zum Beispiel:

Ein praktischer Leitfaden zum Analysieren von Daten mit fester Breite mit PHP-String-Slicing
 John Doe 35Engineer
Jane Smith 28Designer

Hier könnte das Format sein:

  • Vorname: 8 Zeichen
  • Nachname: 8 Zeichen
  • Alter: 2 Zeichen
  • Job: Der Rest

Selbst wenn ein Wert kürzer ist (wie "John"), ist er mit Leerzeichen gepolstert, um die Säulenbreite anzupassen. Diese Konsistenz ermöglicht es uns, Daten nach Position zu extrahieren, nicht nach Inhalt.

Ein praktischer Leitfaden zum Analysieren von Daten mit fester Breite mit PHP-String-Slicing

Verwenden von substr() , um Felder zu schneiden

Die Funktion von PHP substr($string, $start, $length) eignet sich perfekt zum Extrahieren von Teilen einer Zeichenfolge nach Position.

 $ line = "John Doe 35Engineer";

$ firstName = trim (substr ($ line, 0, 8)); // "John"
$ lastname = trim (substr ($ line, 8, 8)); // "Doe"
$ age = trim (substr ($ line, 16, 2)); // "35"
$ job = trim (substr ($ line, 18)); // "Ingenieur" - Länge weglassen, um sich auszuruhen

Schlüsselpunkte:

  • substr() verwendet null basierte Indexierung.
  • Immer trim() das Ergebnis zum Entfernen von Polsterräumen.
  • Wenn Sie das dritte Argument weglassen, gibt substr() alles von der Startposition bis zum Ende zurück.

Dieser Ansatz ist schnell und lesbar und erfordert keine externen Bibliotheken.


Definieren einer Feldkarte zur Wiederverwendbarkeit

Hardcoding -Positionen werden mit vielen Feldern chaotisch. Definieren Sie ein Schema:

 $ schema = [
    ['name' => 'first_name', 'start' => 0, 'Länge' => 8],
    ['name' => 'last_name', 'start' => 8, 'Länge' => 8],
    ['Name' => 'Alter', 'Start' => 16, 'Länge' => 2],
    ['name' => 'Job', 'start' => 18, 'Länge' => 0], // 0 = Rest der Zeile
];

Analysieren Sie nun eine Zeile mit einer Schleife:

 Funktion parsefixedWidth ($ line, $ schema) {
    $ record = [];
    foreach ($ schema as $ field) {
        $ value = substr ($ line, $ field ['start'], $ field ['länge']?: null);
        $ record [$ field ['name']] = trim ($ value);
    }
    $ record zurückgeben;
}

$ line = "John Doe 35Engineer";
$ data = parsefixedWidth ($ line, $ schema);
// Ergebnis: ['first_name' => 'John', 'last_name' => 'doe', ...]

Verwenden ?: null ermöglicht es dem letzten Feld, den Rest der Linie zu erfassen.


Handhabungskantenfälle

Daten in der realen Welt sind nicht immer perfekt. Hier erfahren Sie, wie man sicher bleibt:

  • Überprüfen Sie die Zeilenlänge vor dem Schneiden:

     if (strlen ($ line) <18) {
        // kurze Zeilen verarbeiten - Protokoll, überspringen oder Pad
        $ line = str_pad ($ line, 18, &#39;&#39;);
    }
  • Verwenden Sie Standardwerte für fehlende oder leere Felder:

     $ record [&#39;ay&#39;] = trim ($ ay)?: null;
  • Validieren Sie numerische Felder :

     $ age = trim (substr ($ line, 16, 2));
    $ record [&#39;ay&#39;] = is_numeric ($ ay)? (int) $ ay: null;
  • Leere Zeilen überspringen :

     if (trim ($ line) === &#39;&#39;) fortsetzen;

Lesen aus einer Datei

Die meisten Daten mit fester Breite stammen aus .txt oder .dat Dateien. Verwenden Sie file() oder fopen() :

 $ line = file (&#39;data.txt&#39;, file_ignore_new_lines | file_skip_empty_lines);

foreach ($ line as $ line) {
    $ data [] = parsefixedWidth ($ line, $ schema);
}

Verwenden Sie für große Dateien Streaming, um Speicherprobleme zu vermeiden:

 $ handle = fopen (&#39;data.txt&#39;, &#39;r&#39;);
while (($ line = fGets ($ Handle))! == false) {
    $ line = trim ($ line);
    if ($ line) {
        $ data [] = parsefixedWidth ($ line, $ schema);
    }
}
fcLose ($ Handle);

Bonus: Dynamisches Schema mit Offsets

Anstatt die Positionen manuell zu zählen, definieren Sie die Breite und lassen Sie PHP berechnen, startet:

 $ fieldwidths = [
    [&#39;name&#39; => &#39;first_name&#39;, &#39;width&#39; => 8],
    [&#39;name&#39; => &#39;last_name&#39;, &#39;width&#39; => 8],
    [&#39;Name&#39; => &#39;Alter&#39;, &#39;Breite&#39; => 2],
    [&#39;name&#39; => &#39;Job&#39;, &#39;width&#39; => 0], // ruhen
];

// Schema mit Startpositionen erstellen
$ schema = [];
$ pos = 0;
foreach ($ fieldwidths as $ field) {
    $ schema [] = [
        &#39;name&#39; => $ field [&#39;name&#39;],
        &#39;start&#39; => $ pos,
        &#39;Länge&#39; => $ field [&#39;Breite&#39;]
    ];
    if ($ field [&#39;width&#39;]> 0) {
        $ pos = $ field [&#39;width&#39;];
    }
}

Jetzt geben Sie nur Breiten an - keine Zählspalten auf Papier.


Das Parsinieren von Daten mit festen Breite in PHP muss nicht schmerzhaft sein. Mit substr() , einem klaren Schema und einigen Verteidigungskontrollen können Sie starre, räumliche Linien in saubere, verwendbare Arrays verwandeln. Unabhängig davon, ob Sie Lohn- und Gehaltsabrechnungsdaten importieren oder alte Mainframe -Exporte verarbeiten, ist diese Methode schnell, zuverlässig und leicht zu warten.

Grundsätzlich: Schneiden Sie nach Position, schneiden Sie die Räume ab und kartieren Sie sie sauber. Das ist der Kern.

Das obige ist der detaillierte Inhalt vonEin praktischer Leitfaden zum Analysieren von Daten mit fester Breite mit PHP-String-Slicing. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1510
276
Negative Offsets erläutert: Erschlossener leistungsstarker Reverse -String -Slicing Negative Offsets erläutert: Erschlossener leistungsstarker Reverse -String -Slicing Jul 27, 2025 am 04:33 AM

NegativeOffSetsinpythonallowcounting von der Theendofastring, wobei 1Sthelastcharakter, -2isthesen-zu-last und ASOON, Enable-Accesstocharacter mit der KnowledTheSthestrings;

Rand-Falluntersuchung: Wie PHP-Schnittfunktionen Nulls und Out-of-Bounds-Offsets ausgehen Rand-Falluntersuchung: Wie PHP-Schnittfunktionen Nulls und Out-of-Bounds-Offsets ausgehen Jul 27, 2025 am 02:19 AM

Array_Slice () TreatSnullOffsetsas0, Clampsout of-BoundsOffsetStoreturnEmptyArraySoRlullarrays und HandlesnullLengthas "totheend";

Zeichen vs. Byte: Die kritische Unterscheidung in der Manipulation von PHP -String Zeichen vs. Byte: Die kritische Unterscheidung in der Manipulation von PHP -String Jul 28, 2025 am 04:43 AM

Charaktere undByTesarenotthesameInPhpBecauseutf-8encodingus1to4ByTespercharacter, Sofunctionslikestren () und Substr () canmiscou ntorbreakstrings; 1.Alwaysusemb_strlen ($ str, 'utf-8') forcuratecharacterCount; 2.SEMB_SUBSTR ($ STR, 0,3, 'UTF-8') toSafelyextrahiert

Ein praktischer Leitfaden zum Analysieren von Daten mit fester Breite mit PHP-String-Slicing Ein praktischer Leitfaden zum Analysieren von Daten mit fester Breite mit PHP-String-Slicing Jul 26, 2025 am 09:50 AM

Mit Substr () zum Schneiden nach Position ist trim (), um Leerzeichen zu entfernen und die Feldzuordnung zu kombinieren, die Kernmethode zum Analysieren von Daten mit festen Breite. 1. Definieren Sie die Startposition und Länge des Feldes oder definieren Sie nur die Breite, um das Startbit nach dem Programm zu berechnen. 2. Verwenden Sie Substr ($ line, $ start, $ Länge), um den Feldinhalt zu extrahieren, und lassen Sie die Länge weg, um den verbleibenden Teil zu erhalten. 3. Auftragen Sie Trim (), um die Füllräume für jedes Feldergebnis zu löschen. 4. Verwenden Sie wiederverwendbare analytische Funktionen durch Schleifen und Schema -Arrays; 5. Handlungsfälle wie die Fertigstellung, wenn die Leitungslänge nicht ausreicht, leere Linienüberschnitte, fehlende Werte setzen Standardwerte und Typüberprüfung. 6. Verwenden Sie Datei () für kleine Dateien, um fopen () für große Dateien zu optimieren, um zu optimieren

Die Anleitung eines Entwicklers zu robuster und wartenbarer String -Schnittlogik Die Anleitung eines Entwicklers zu robuster und wartenbarer String -Schnittlogik Jul 25, 2025 pm 05:35 PM

Vermeiden Sie RawindexMathByCapsulatingSlictlogicinNamedFunctionStoexpressintentandisolateAsStions.2.ValidateInputSearlyWithdefensivChKsandMeaningfulerRormessagestopreventruntimeErrors.3

Optimierung des Speicherverbrauchs während groß an Optimierung des Speicherverbrauchs während groß an Jul 25, 2025 pm 05:43 PM

UseStringViewSorMemory-effizientesReferencesInsteadofCreatingSubstringCopiestoavoidDuplicatingData; 2.ProzessStringsinchunksorstreamstominimizepeakmemoryUSageByReadingAndatlingDataincrementally;

Implementierung einer fließenden Schnittstelle für komplexe Stringschneideketten Implementierung einer fließenden Schnittstelle für komplexe Stringschneideketten Jul 27, 2025 am 04:29 AM

Die Verwendung einer glatten Schnittstelle zum Umgang mit komplexen Stringscheiben kann die Lesbarkeit und Wartbarkeit des Codes erheblich verbessern und die Betriebsschritte durch Methodenketten durchführen. 1. Erstellen Sie die FluentString -Klasse und geben Sie sich nach jeder Methode wie Slice, Reverse, to_upper usw. zurück, um Kettenaufrufe zu unterstützen. 2. Erhalten Sie das Endergebnis durch das Wertattribut; 3.. Extended Safe_Slice verarbeitet Grenzausnahmen; 4. Verwenden Sie IF_Contains und andere Methoden, um die bedingte Logik zu unterstützen. 5. Bei der Log-Parsing oder Datenreinigung macht dieser Modus eine intuitive, leicht zu debugierende und weniger anfällige String-String-Transformation, wodurch letztendlich den eleganten Ausdruck komplexer Operationen erreicht wird.

Die Unicode -Herausforderung: Safe String Slicing mit `mb_substr ()` in PHP Die Unicode -Herausforderung: Safe String Slicing mit `mb_substr ()` in PHP Jul 27, 2025 am 04:26 AM

Die Verwendung von mb_substr () ist der richtige Weg, um das Problem der Unicode-String-Interception in PHP zu lösen, da Substr () durch Bytes schneidet und Multi-Byte-Zeichen (wie Emoji oder Chinesen) in verstümmelten Code abgeschnitten werden; Während mb_substr () nach Zeichen schneidet, die UTF-8-codierte Zeichenfolgen korrekt verarbeiten können, stellen die Ausgabe vollständiger Zeichen sicher und vermeiden Sie die Datenbeschädigung. 1. Verwenden Sie immer mb_substr () für Zeichenfolgen, die Nicht-ASCII-Zeichen enthalten. 2. Geben Sie explizit die 'UTF-8' -Codierungsparameter an oder setzen Sie mb_internal_encoding ('utf-8'); 3. Verwenden Sie mb_strlen () anstelle von strlen (), um die richtigen Zeichen zu erhalten

See all articles