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 01-08-2007, 19:17
strassencoder
 Newbie
Links : Onlinestatus : strassencoder ist offline
Registriert seit: Jan 2006
Beiträge: 35
strassencoder ist zur Zeit noch ein unbeschriebenes Blatt
strassencoder eine Nachricht über Yahoo! schicken
Question Massenhafte Fileverarbeitung, bräuchte kurz mal Hilfe

Hallo Community,

ich steh mit einem Projekt ein bisschen aufm Schlauch. Mir fehlt noch eine function/befehl um meine Mission zu beenden, jedoch habe ich sowas noch nie machen müssen, und nun hängt es wohl an den Grundlagen....

Problem/Aufgabe: ein Order mit ca. 2000 Text-files, nun sollen alle Files nach einem String durchsucht werden, wenn der String gefunden ist soll anhand eines Mustervergleichs ein immer unterschiedliches Stück aus dem File/string in eine Mysql-DB geschrieben werden.

Ich habe schon einiges gecoded jedoch hängts an dem auswerten des Strings.

Mein script arbeitet die files durch, findet das "Suchkriterium" in meinem Fall "Mann", "Frau" oder "Firma". Wie , oder mit welchem Befehl kann ich nun aus z.B. diesem String:
"
F r a u c a r m e n M ü l l e r

M ü l l e r s t r a s s e 6 7

8 2 3 6 6 m e i t t e n

T e l e f o n n u m m e r : 0 1 1 1 1 1 1 1 1 1

B e r u f : "

alles ausschneiden zwischen F R A U und B e r u f.... leider bin ich mit RegEX nicht so bewandert, da jeder Mensch anderst heisst und woanderst wohnt ist die Stringlänge auch variabel, auch das vorkommen des gesuchten Strings ist immer unterschiedlich...

Hintergrund des ganzen ist eine Liste aller Menschen zu erstellen die mir je was geschrieben haben ... die Leerzeichen zwischen den Buchstaben sind gewollt. vielen Dank schonmal im voraus für eure Hilfe.

Strassencoder Andre
Mit Zitat antworten
  #2 (permalink)  
Alt 01-08-2007, 20:20
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

substr($str, strpos('F R A U'), -1*(strlen($str)-strpos('B e r u f'))
Mit Zitat antworten
  #3 (permalink)  
Alt 02-08-2007, 11:28
strassencoder
 Newbie
Links : Onlinestatus : strassencoder ist offline
Registriert seit: Jan 2006
Beiträge: 35
strassencoder ist zur Zeit noch ein unbeschriebenes Blatt
strassencoder eine Nachricht über Yahoo! schicken
Standard

Guten Morgen,

@nerd: naja , so ein nerd kannst du nicht sein, ich werde das "konstrukt" mal testen, vielen Dank schonmal für die Hilfe. Manchmal steh ich einfach aufm Schlauch und mir fällt dann nix mehr ein.

Gruß Strassencoder
Mit Zitat antworten
  #4 (permalink)  
Alt 02-08-2007, 11:30
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

OffTopic:
Zitat:
Original geschrieben von strassencoder
@nerd: naja , so ein nerd kannst du nicht sein,

Mit Zitat antworten
  #5 (permalink)  
Alt 02-08-2007, 13:31
strassencoder
 Newbie
Links : Onlinestatus : strassencoder ist offline
Registriert seit: Jan 2006
Beiträge: 35
strassencoder ist zur Zeit noch ein unbeschriebenes Blatt
strassencoder eine Nachricht über Yahoo! schicken
Standard

Hy

Leider bringt es nicht ganz das gewünschte Ergebnis, kann aber nur noch ne kleinigkeit sein.

ich habe es ein bisschen aufgedrösselt :

$inhalt_der_datei = "den ganzen inhalt der datei mit Frau und .... ";

$name_adresse_start = strpos($inhalt_der_datei,'Frau');
$name_adresse_stop = strlen($inhalt_der_datei)-strpos($inhalt_der_datei,'Telefonnummer');
$name_adresse = substr($inhalt_der_datei,$name_adresse_start,$name_adresse_stop );

echo $name_adresse;

das -1* habe ich mal weg, und den strpos syntax richtig gemacht ...

das Problem was ich jetzt hab ist, dass PHP mir ab dem 2. Vorkommen des Wortes Frau bis zum Ende alles ausgibt. PHP sollte dies aber vom 1. Vorkommen bis Ende. Wie kan ich meinem script beibringen das Erste vorkommen zu nehmen. Gruß Andre

ps: Nerd [nɜːd] (engl. für Fachidiot, Langweiler, Sonderling, Streber, Schwachkopf, Außenseiter, Freak, Geek) ,

wobei Nerd eher nagativ ist, Geek wäre positiver Streber
Mit Zitat antworten
  #6 (permalink)  
Alt 02-08-2007, 13:49
strassencoder
 Newbie
Links : Onlinestatus : strassencoder ist offline
Registriert seit: Jan 2006
Beiträge: 35
strassencoder ist zur Zeit noch ein unbeschriebenes Blatt
strassencoder eine Nachricht über Yahoo! schicken
Standard

Ok ... bin schlauer, es scheint als ob der Fehler an dem File, also dem "haystack" liegt.

es ist ein .msg file aus MickyOutlook , im editor betrachtet steht mein keyword "Frau" als "F R A U" , file_get_content-schleife zeigt bei echo ausgabe "FRAU" , im Quelltext dann wieder "F R A U", Hmmm ich kann aber die spaces nicht entfernen da ich diese als Trennung zw. Vorname Nachname Str/hausnummer brauche.

EDIT: als ich das original-File im Editor als UTF-8 statt ANSI gespeichert hatte fand mir strpos das richtige vorkommen von "Frau" ....

EDIT2: $inhalt_der_datei = str_replace(chr(0), "", $inhalt_der_datei); <- das ist mein Freund, jetzt kann ich schonmal die email extrahieren, mit der Adresse gibts noch so das eine oder andere Problemchen....

Was wisst Ihr was ich wissen müsste ?

Gruß Andre der ratlose Strassencoder ....

Geändert von strassencoder (02-08-2007 um 14:15 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 02-08-2007, 14:04
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von strassencoder
Was wisst Ihr was ich wissen müsste ?
Du müsstest ein bisschen mehr über Zeichenkodierungen Bescheid wissen.


Die "Leerzeichen" sind nämlich vermutlich gar keine, sondern Null-Bytes - bei UTF-8 wird bei den in ASCII abbildbaren Zeichen das zweite Byte nämlich auf Null gesetzt.

Ob du also in einem in Kodierung XY vorliegenden Text den Suchbegriff findest, hängt massgeblich damit zusammen, ob du "beim Suchen" auch die gleiche Kodierung verwendest.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 02-08-2007, 14:18
strassencoder
 Newbie
Links : Onlinestatus : strassencoder ist offline
Registriert seit: Jan 2006
Beiträge: 35
strassencoder ist zur Zeit noch ein unbeschriebenes Blatt
strassencoder eine Nachricht über Yahoo! schicken
Standard

Hy Wahsaga,

$inhalt_der_datei = str_replace(chr(0), "", $inhalt_der_datei);

war mein Freund der mir half ...

ist immernoch ein bisschen vertrackt das ganze , ich bin nur darauf gekommen als ich es mal in einem hex/dec Editor gesehen hatte das es keine "leerzeichen" sondern chr(0) waren....

50% geschaffft , ich habe aber immernoch das Problem das nun das Ende des substr nicht gefunden wird.

Gruß von einem nicht mehr ganz so ratlosen Strassencoder
Mit Zitat antworten
  #9 (permalink)  
Alt 02-08-2007, 14:30
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Testausgaben?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #10 (permalink)  
Alt 02-08-2007, 14:41
strassencoder
 Newbie
Links : Onlinestatus : strassencoder ist offline
Registriert seit: Jan 2006
Beiträge: 35
strassencoder ist zur Zeit noch ein unbeschriebenes Blatt
strassencoder eine Nachricht über Yahoo! schicken
Standard

Testausgaben sind nicht so einfach da ich genau die Zeilen ersetzen muss mit den persönlichen Daten um es zu posten.

Ich bin auch schon ein bisschen weiter, das Ende wird nun in 2/3 der Fälle auch richtig erkannt. Leider nicht immer, das Ende des gesuchten Strings ist in 2/3 der Fälle das besagte "Telefonnummer" , leider gibt es auch files ohne das.... was in allen 4000 Files das gleiche ist, ist ein doppelter Absatz zw quasi plz-stadt und Telefonnummer.

Ich müsste jetzt wissen wie man quasi nach einem "/n/n" also doppelter absatz sucht, bei

strpos($inhalt_der_datei,'/n/n'); kann das nicht funktionieren, aber da gibt es bestimmt auch nen Trick.... wenn ich das noch wüsste wäre meine Mission erfolgreich.

Gruß vom immer schlaueren Strassencoder Andre
Mit Zitat antworten
  #11 (permalink)  
Alt 02-08-2007, 14:43
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von strassencoder
bei strpos($inhalt_der_datei,'/n/n'); kann das nicht funktionieren
Stimmt. Zum einen ist /n kein Zeilenumbruch, und zum anderen, so /n denn das entsprechende Steuerzeichen darstellen würde, wären die Hochkommata falsch.

http://www.php.net/manual/de/language.types.string.php
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #12 (permalink)  
Alt 02-08-2007, 16:54
strassencoder
 Newbie
Links : Onlinestatus : strassencoder ist offline
Registriert seit: Jan 2006
Beiträge: 35
strassencoder ist zur Zeit noch ein unbeschriebenes Blatt
strassencoder eine Nachricht über Yahoo! schicken
Standard

hmmm....

also gibt es keine möglichkeit strpos auf z.B. /n , /n/n oder /n/r anzuwenden. oder doch ?

oder muss es nur heissen "\n" statt '\n'

Gruß Andre
Mit Zitat antworten
  #13 (permalink)  
Alt 02-08-2007, 16:57
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

doch gibt es natürlich! Probiers aus. Nur du weißt, wie deine Daten aussehen, weil du es uns ja nicht zeigen darfst.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #14 (permalink)  
Alt 02-08-2007, 16:57
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
oder muss es nur heissen "\n" statt '\n'
Was war denn daran
Zitat:
Zum einen ist /n kein Zeilenumbruch, und zum anderen, so /n denn das entsprechende Steuerzeichen darstellen würde, wären die Hochkommata falsch.
nicht klar ?
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #15 (permalink)  
Alt 02-08-2007, 17:05
strassencoder
 Newbie
Links : Onlinestatus : strassencoder ist offline
Registriert seit: Jan 2006
Beiträge: 35
strassencoder ist zur Zeit noch ein unbeschriebenes Blatt
strassencoder eine Nachricht über Yahoo! schicken
Standard

Hey, ich bin doch noch am lernen. Aber es klappt dank eurer Hilfe

Tja was soll ich sagen, danke Herr Wahsaga, auch dafür das ich mal wieder was lernen konnte weil ich es mit Fingerzeig von Dir selber rausgefunden hab.

also in meinem fall hat mit strpos "\n\r\n\r" geholfen, jetzt werden alle files richtig ausgelesen, was mir das manuelle eintippen von 4000 Kundenadressen erspart hat und ich nur noch 4000 mal betätigen muss

Danke auch an jahlives und onemorenerd.

Hier noch der Code falls jmd mal auf ähnliche Probleme stossen sollte.

PHP-Code:
//funktion aus php.net bei strpos
function TextBetween($s1,$s2,$s){
  
$s1 strtolower($s1);
  
$s2 strtolower($s2);
  
$L1 strlen($s1);
  
$scheck strtolower($s);
  if(
$L1>0){$pos1 strpos($scheck,$s1);} else {$pos1=0;}
  if(
$pos1 !== false){
    if(
$s2 == '') return substr($s,$pos1+$L1);
    
$pos2 strpos(substr($scheck,$pos1+$L1),$s2);
    if(
$pos2!==false) return substr($s,$pos1+$L1,$pos2);
  }
  return 
'';
}

//// Ab hier mein Teil

$dateiname="test/test2.msg";
$zeiger_auf_datei=fopen($dateiname,"rb");
$inhalt_der_datei=fread($zeiger_auf_datei,filesize($dateiname));
fclose($zeiger_auf_datei);
//erster Trick
$inhalt_der_datei str_replace(chr(0), ""$inhalt_der_datei);
//email finden
$email TextBetween('From: <','>',$inhalt_der_datei);

echo 
$email//geht

$name_adresse TextBetween('Frau',"\n\r\n\r",$inhalt_der_datei)  ;

echo 
$name_adresse;

exit; 

Geändert von strassencoder (02-08-2007 um 17:08 Uhr)
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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:22 Uhr.