PHP Suchen String in CSV-Datei
Habe ich eine große, flache Datei von Benutzernamen und E-Mails in folgendem format:
"username", "email"
"username", "email"
"username", "email"
etc...
Muss ich an die E-Mail und die Suche nach dem Benutzernamen, aber für einige Grund es wird zu keinem Ergebnis. Es funktioniert, wenn ich die Suche gegenüber.
$string = "[email protected]";
$filename = "user_email.txt";
$h = fopen("$filename","r");
$flag=0;
while (!feof ($h)) {
$buffer = fgets($h);
$thisarray = split(",", $buffer);
if ($string == str_replace('"','', $thisarray[1])) {
$i = 1;
$i++;
echo '<td bgcolor="#CCFFCC"><b style="color: maroon">' . str_replace('"','',$thisarray[0]). '</b></td>';
}
Irgendwelche Ideen? Danke!
- Sie können
fgetcsv
zu Lesen CSV-Zeile aus der einen Datei-handle: php.net/fgetcsv - mögliche Duplikate von PHP-Lesen von CSV-und-filter nach Datum
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als pro reko_t Vorschlag: Verwenden Sie fgetcsv zum Lesen von einzelnen Zeilen der csv in arrays, bis Sie finden, wo das zweite element mit dem Suchbegriff übereinstimmen. Das erste element ist dann der Benutzername. So etwas wie:
Können Sie verwenden
fgetcsv()
direktfgetcsv()
(als netter Nebeneffekt) auch entfernt das "Feld " Gehäuse" (die doppelten Anführungszeichen"
) für Sie, wenn Sie existiert.Ihrem eigenen Beispiel, wahrscheinlich nicht funktioniert, weil, wenn Sie eine solche Linie
splitting bei
,
führtBeachten Sie die Leerzeichen vor
"email"
, dass Sie vergessen zu entfernen. Zusätzliche Verwendungstr_replace()
entfernen Sie die umgebenden Anführungszeichen, ist ganz unsicher. Haben Sie einen Blick auftrim()
.Erste, verwenden Sie einfach file() den Inhalt der Datei in ein array:
Nun eine Schleife durch den Inhalt des Arrays, die Aufteilung der strings und die Prüfung der E-Mail-Adresse:
Ich denke, die einfachste Lösung ist die Verwendung von file() mit str_getcsv().
Würde der code so etwas wie dieses:
Während fgetcsv ist möglicherweise eine elegantere Lösung, die nicht die Antwort auf Ihre ursprüngliche Frage: Ihre zweite array-element ist ein Zeilenumbruch, und Sie sind Vergleich gegen einen string, der nicht.
Beheben:
Ich glaube wirklich, dass alle Beispiele in anderen Antworten funktioniert!
Aber alle sind Sie langsam, weil alle von Ihnen travers jede Zeile in der csv-Datei...
Ich habe ein weiteres Beispiel, wie finden die gewünschten Zeichenfolge:
Ja, es ist eine Art dunkle Materie, aber es funktioniert wirklich und es ist wirklich schnell!