php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 11-12-2008, 19:08
DarkRoot
 Registrierter Benutzer
Links : Onlinestatus : DarkRoot ist offline
Registriert seit: May 2005
Beiträge: 44
DarkRoot ist zur Zeit noch ein unbeschriebenes Blatt
Standard [REGEX] HTML in CSV

Guten Abend,

ich sitze nun schon seit ein paar Stunden und noch mehr Stunden google, weil ich dachte, das Problem muss doch schonmal jemand gehabt haben, aber bisher vergeblich.

Ich habe also eine (momentan 80MB, kann aber noch viel größer werden) CSV Datei in folgendem Format:
Code:
spalte1;spalte2;spalte3;"<html>
<head>
blabla
</head>
<body>
<a href=\"index.php\">Linktitel</a>
<script>
variable1 = \"wert1\";
</body>";spalte5;spalte6
zeile2Spalte1;zeile2Spalte2;
und so weiter. Das Ganze möchte ich nun möglichst in ein array bzw. im Endeffekt in eine Datenbank packen.
Normale CSV Funktionen kann ich nicht nutzen, weil es nicht in einer Zeile steht. Also muss ein regex her. Dann müssen escapede Anführungszeichen und Samikola innerhalb von Anführungszeichen "ignoriert" werden.


Also bisher hab ich das hier, aber da kommt nur Müll raus:
Code:
 preg_match_all('§([^"])*;|(\"(((?<=\\\\)\")|[^"])*(?<!\\\\)\")§imsU', $csvdata, $matches);
(ja, das [code] Tag is Absicht, das PHP Tag klaut Backslashes...)
Alle anderen Ansätze kommen mir mit timeout (300 seconds) oder sonstige Fehler...
Hier gabs auch noch 'nen interessanten Ansatz:
http://www.programmersheaven.com/use...SV-with-regex/

Aber da wird leider nicht berücksichtigt, dass man die Zeichen escapen kann.

Jemand 'ne Idee?

Geändert von DarkRoot (11-12-2008 um 19:10 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 11-12-2008, 19:18
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wieso gehts nicht mit CSV-Funktionen?
Mit Zitat antworten
  #3 (permalink)  
Alt 11-12-2008, 19:45
phpguru42
 Newbie
Links : Onlinestatus : phpguru42 ist offline
Registriert seit: Oct 2008
Beiträge: 71
phpguru42 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: [REGEX] HTML in CSV

Zitat:
Original geschrieben von DarkRoot
Normale CSV Funktionen kann ich nicht nutzen, weil es nicht in einer Zeile steht.
Dürfte kein Problem sein. Ich habe mich auch gerade mit CSV beschäftigt, allerdings die andere Richtung, also aus DB -> CSV. Und Zeilenumbrüche innerhalb der "Zellen" sind kein Problem.

Siehe auch: http://tools.ietf.org/html/rfc4180
Zitat:
6. Fields containing line breaks (CRLF), double quotes, and commas
should be enclosed in double-quotes.
Und das ist ja bei Dir der Fall.

Vielleicht ist ja der Backslash für die " im HTML das Problem. Die werden normalerweise auch mit einem weiteren " escaped. Diesen Parameter kann man bei fgetcsv nicht angeben, wie es aussieht.
Zitat:
7. If double-quotes are used to enclose fields, then a double-quote
appearing inside a field must be escaped by preceding it with
another double quote. For example:

"aaa","b""bb","ccc"
Mit Zitat antworten
  #4 (permalink)  
Alt 11-12-2008, 20:08
DarkRoot
 Registrierter Benutzer
Links : Onlinestatus : DarkRoot ist offline
Registriert seit: May 2005
Beiträge: 44
DarkRoot ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ouch.
Ich hätte es einfach mal ausprobieren sollen.
Ging blind davon aus, dass der das innerhalb der Anführungszeichen auch als mehrzeilig ansieht.
Das \" => "" Problem lässt sich ja mit 'nem einfachen replace lösen.
Das Array sieht so aus, wie ich es haben wollte. Vielen Dank!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:51 Uhr.