Wie zu erkennen, ein Trennzeichen in einem string in PHP?
Ich bin gespannt, ob du einen string hast, wie würdest du erkennen das Trennzeichen?
Wir wissen, kann php split einen string mit explode (), die erfordert eine delimiter-parameter.
Aber was ist eine Methode zur Erkennung der Trennzeichen, bevor es zu explodieren-Funktion?
Jetzt bin ich gerade ausgeben der Zeichenfolge an den Benutzer und geben Sie das Trennzeichen. Das ist in Ordnung-aber ich bin auf der Suche für die Anwendung, um Muster zu erkennen für mich.
Sollte ich achten, um reguläre Ausdrücke für diese Art der Mustererkennung in einem string?
EDIT: ich habe versagt zunächst angeben, dass es einen wahrscheinlich erwartet, Satz von Trennzeichen. Ein beliebiges Trennzeichen, das wahrscheinlich in eine CSV-Datei. Also technisch könnte jemand alle Zeichen begrenzen eine CSV-Datei, aber es ist wahrscheinlicher, um die Verwendung eines der folgenden Zeichen: Komma, Strichpunkt, senkrechter Strich und ein Leerzeichen ein.
EDIT 2: Hier ist die praktikable Lösung, die ich kam mit einem "bestimmt Trennzeichen".
$get_images = "86236058.jpg 86236134.jpg 86236134.jpg";
//Detection of delimiter of image filenames.
$probable_delimiters = array(",", " ", "|", ";");
$delimiter_count_array = array();
foreach ($probable_delimiters as $probable_delimiter) {
$probable_delimiter_count = substr_count($get_images, $probable_delimiter);
$delimiter_count_array[$probable_delimiter] = $probable_delimiter_count;
}
$max_value = max($delimiter_count_array);
$determined_delimiter_array = array_keys($delimiter_count_array, max($delimiter_count_array));
while( $element = each( $determined_delimiter_array ) ){
$determined_delimiter_count = $element['key'];
$determined_delimiter = $element['value'];
}
$images = explode("{$determined_delimiter}", $get_images);
- Was bedeutet das Trennzeichen Aussehen?
- Ich bin verwirrt über die Logik, dass der Benutzer geben Sie das Trennzeichen an. Was ist der Zweck? Warum nicht einfach mit einer von den üblicherweise verwendeten Trennzeichen und mit ihm getan werden?
- was Sie fordern, klingt ziemlich unrealistisch, wenn alles, was könnte ein Trennzeichen. Mustervergleich zur Erkennung von Trennzeichen ist eine nicht-triviale Aufgabe
- Alles, was Sie mit kommen nach dieser Spezifikation wird O(n^c). Wo n ist die Menge aller möglichen Trennzeichen und c ist die Länge der Zeichenfolge. Hässlich...
- Gut, Sie bauen konnte ein heuristisches Verfahren, das versucht, zu identifizieren, die ein Trennzeichen aus einer Liste der möglichen Trennzeichen (
,;/|
alle in den Sinn kommen). Je nach Bedarf, die Sie tun könnten, zählen die Analyse auf die Anzahl der Zeiten, die der Charakter wird in der Datei (nachdem alle, ein Trennzeichen angezeigt würde, mindestens ein paar mal pro Zeile, würde ich denken)... - können Sie weitere Informationen zu liefern bitte. Einige Eingabedaten und welche möglichen Trennzeichen, die Sie erwarten.
- Ich habe nicht angegeben, dass es einen wahrscheinlich erwartet, Satz von Trennzeichen. Ein beliebiges Trennzeichen, das wahrscheinlich in eine CSV-Datei. Also technisch könnte jemand alle Zeichen begrenzen eine CSV-Datei, aber es ist wahrscheinlicher, um die Verwendung eines der folgenden Zeichen: Komma, Semikolon und einem Leerzeichen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bestimmen, welche Trennzeichen Sie betrachten wahrscheinlich (wie
,
,;
und|
) und für jede Suche, wie oft Sie auftreten, in der die Zeichenfolge (substr_count
). Wählen Sie dann die mit den meisten vorkommen, wie Sie das Trennzeichen und dieexplode
.Obwohl das nicht sein, fail-safe-es sollte in den meisten Fällen 😉
,,,,, ;;;;; ||||||
?,
oder eine;
.;
als Trennzeichen, aber geben Sie eine Zeichenfolge wie:Barbados,Belarus,Brazil;Canada,China,Congo,Cuba
? Es gibt nur eine Instanz die tatsächliche Trennzeichen;
aber fünf Instanzen von,
ist eine weitere mögliche Wahl. In diesem Fall, die Wahl der einen mit der die meisten Geschehnisse geben, die das falsche Ergebnis.Ich würde sagen, das funktioniert zu 99,99% der Fälle 🙂
Die grundlegende Idee ist, dass die Anzahl der gültigen Trennzeichen sollte die gleiche Zeile.
Dieses Skript berechnet Trennzeichen zählen Diskrepanzen zwischen allen Linien.
Weniger Diskrepanz bedeutet eher gültige Trennzeichen.
Dass Sie alle zusammen diese Funktion Zeilen Lesen und es wieder zurück als array:
Ich habe das gleiche problem, ich beschäftige mich viel mit CSV ' s aus verschiedenen Datenbanken, die verschiedene Menschen zu extrahieren, um CSV-Format in verschiedenen weisen, manchmal unterscheidet sich jedes mal für die gleiche Datenmenge ... Haben einfach implementiert eine Funktion wie diese in meinem konvertieren Basisklasse
Machte ich so etwas wie dieses:
Diese einfach überprüft, ob es eine zweite Spalte nach Zeile gelesen.
Ich bin mit dem gleichen Problem. Mein system erhalten CSV-Dateien aus dem client, aber es könnte ";", "," oder", " als Trennzeichen und ich wnat um das system zu verbessern, so dass die Kunden nicht haben, um zu wissen, (die Sie nie tun).
Ich Suche und fanden diese Bibliothek:
https://github.com/parsecsv/parsecsv-for-php
Sehr gut und einfach zu bedienen.