php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Jobs und Projekte > Projekthilfe
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


Projekthilfe Hier könnt Ihr eine Art Projekthilfe anfordern. Unter Projekthilfe verstehen wir Angebote bei denen KEIN Geld gezahlt werden kann.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-10-2006, 21:12
ThE_-_BliZZarD
 Newbie
Links : Onlinestatus : ThE_-_BliZZarD ist offline
Registriert seit: Oct 2006
Beiträge: 25
ThE_-_BliZZarD ist zur Zeit noch ein unbeschriebenes Blatt
Standard HTM-Dok mit PHP auseinandernehmen und in DB

Naja, ich mal wieder.

Diesmal folgendes:

1. Ein HTML-Dokument, welches (sehr schlecht gemacht ist, aber das war ich nicht und interessiert hier auch nicht, kann aber Syntaxfehler enthalten ) aus ein bisschen Text besteht und einer Tabelle der folgenden Form:
Zitat:
<tr>
<td class="oben"> 26.04.2006</td>
<td> <b>Dies ist die Überschrift</b>
<br>
BLA BLA BLA BLA BLA BLA -- viel Text --
</td>
</tr>
So, mal zum Format: das Datum aus dem"<td class="oben"> 26.04.2006</td>" will ich in die DB einlesen, also WICHTIG.
Das, was zwischen dem zweiten <td> und </td> steht, gehört nicht zusammen, muss aber auch in die DB. Die Überschrift MIT dem <b> (wenn eins da steht) soll als ein Element in die DB, und der Text danach, der IMMER mit einem <br> von der Überschrift abgegrenzt ist.

2. Ein PHP-Dokument, welches das HTML-Ding öffnen und einlesen soll^^

Mein Problem: Das PHP-Dokument fehlt xD.
Ich habe es versucht mit sehr vielen While's, Strpos() usw usw.. aber da ich zum Beispiel nie kapiert habe wie dieses behinderte ereg funktioniert (ka, niemand erklärt mal wies funktioniert, und die ANleitung bei PHP.net hat auch nicht geholfen) bekomme ich außer 500'er Fehlern nichts raus.

Könnte mir jemand ein Script schreiben, das einfach nur eine Tabelle (begrenzt durch zwei Strings, die einzeln in einer Zeile stehen und Anfang/Ende signalisieren) nimmt, und dann in eine DB haut? BITTE.
Ich weiß, is viel Hirnarbeit erforderlich, aber ich komm nicht mehr weiter, und habs schon lange probiert.. (6 Tage).
Mit Zitat antworten
  #2 (permalink)  
Alt 29-10-2006, 08:57
Marcusson
 Registrierter Benutzer
Links : Onlinestatus : Marcusson ist offline
Registriert seit: Jan 2006
Beiträge: 241
Marcusson ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Tz, wie soll dir jemand helfen, wenn wir nicht die komplette Syntax deiner Datei haben.

Versuch es mal mit Google und "Perl regular expressions" und preg_match() bzw. preg_replace(). Der Schreiben ist einfach nur Fleißarbeit. Text auslesen und Inserts zusammenbauen. Keine spannende Aufgabe - aber ohne die Syntax und die Sonderfälle zu kennen, kann man dir keinen passenden regulären Ausdruck anbieten.

Mal 'ne grundsätzliche Frage: Wenn's nur eine einzige Datei ist und du das sowieso nur einmal brauchst, warum machtst du es dann eigentlich nicht mal fix mit dem Texteditor? Ein guter Editor beherrscht auch regular expressions Damit kann man sich ohne zu programmieren herrliche Inserts basteln.
Mit Zitat antworten
  #3 (permalink)  
Alt 29-10-2006, 16:08
ThE_-_BliZZarD
 Newbie
Links : Onlinestatus : ThE_-_BliZZarD ist offline
Registriert seit: Oct 2006
Beiträge: 25
ThE_-_BliZZarD ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hmm, sagen dir 40kb was? ^^ und es sind leider mehrere solche dateien.

werde mich noch mal dran setzen, aber, wegen dem Syntax: was meinst du damit? willst du wissen wie das genau aufgebaut ist?

PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<
title>New document</title>
</
head>
<
body>
bla bla bla
<table>
<!-- 
Info-Tabelle beginnt hierACHTUNGHINWEIS N I C H T ENTFERNEN! -->


<
tr>
<
td class="oben"26.04.2006</td>
<
td> <b>Dies ist die Überschrift</b>
<
br>
BLA BLA BLA BLA BLA BLA -- viel Text --
</
td>
</
tr>

<
tr>
<
td class="oben"27.05.2006</td>
<
td> <b>Dies ist die Überschrift</b>
<
br>
BLA BLA BLA BLA BLA BLA -- viel Text --
</
td>
</
tr>

<
tr>
<
td class="oben"16.06.2006</td>
<
td> <u>Dies ist die Überschrift</u>
<
br>
BLA BLA BLA BLA BLA BLA -- viel Text --
</
td>
</
tr>


<
tr>
<
td class="oben"14.04.2006</td>
<
tdDies ist die Überschrift
<br>
BLA BLA BLA BLA BLA BLA -- viel Text --
</
td>
</
tr>

<!-- 
Info-Tabelle endet hierACHTUNGHINWEIS N I C H T ENTFERNEN! -->
</
table>
</
body>
</
html
Mit Zitat antworten
  #4 (permalink)  
Alt 29-10-2006, 20:07
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

preg_match_all("/<td class=\"oben\">[\ ]\d{2}\.\d{2}\.\d{4}<\/td>/i",$string, $dates)
for($a=0;$a<count($dates);$a++){
$dates[$a] = preg_replace("/<td class=\"oben\">[\ ](\d{2}\.\d{2}\.\d{4})<\/td>/i","$1",$dates[$a]);
}

die anderen kannst du nach dem selben Schema machen.

ich habe kein [PHP] benutzt, da sonst die Backslashes verschwinden.

Warum benutzt du für sowas eigentlich nicht XML?
Mit Zitat antworten
  #5 (permalink)  
Alt 29-10-2006, 20:30
ThE_-_BliZZarD
 Newbie
Links : Onlinestatus : ThE_-_BliZZarD ist offline
Registriert seit: Oct 2006
Beiträge: 25
ThE_-_BliZZarD ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ahh, endlich jemand mit skill *freu*

naja, XML? kann ich nicht/nur unzureichend.

mal was anderes: kann mir jemand erklären, wie dieser Syntax mit preg_replace und ereg funktioniert? ich hab die Erklärung auf PHP.net nicht wirklich verstanden, kann jemand vieleicht mal erleutern wie das funktioniert?

Zitat:
preg_match_all("/<td class=\"oben\">[\ ]\d{2}\.\d{2}\.\d{4}<\/td>/i",$string, $dates)


Trotzdem DankE!!
Mit Zitat antworten
  #6 (permalink)  
Alt 29-10-2006, 22:32
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

such unter wiki "pregexp"
Mit Zitat antworten
  #7 (permalink)  
Alt 31-10-2006, 05:14
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

okay..

preg_match_all("/<td class=\"oben\">[\ ]\d{2}\.\d{2}\.\d{4}<\/td>/i",$string, $dates)

preg_match_all finde alle stellen in $string und merk sie dir in $dates (array), die wie folgt aussehen:

/ sogenannter delimiter... der sagt "hier gehts los".. , der am ende hingegen "hier ist schluss.. es folgen Modifier.. deshalb gehts nicht ohne, sonst würde das i ganz am ende falsch interpretiert.. das sagt nämlich.. scher dich einen dreck um groß- und kleinschreibung...

weiter im text..

also finde zeichenfolgen, die beginnen mit exakt:
<td class=\"oben\"> (die backslashes sind dafür da, dass er beim " nicht denkt, hier wär der sting zu ende, sondern diese als "-zeichen ansieht.. in wahrheit sucht er also <td class="oben">

jetzt kommt ne zeichenklasse... was die hier macht, weiß ich gerade nicht.. ein leerzeichen an dieser stelle hätte es auch getan *find*..
also wie auch immer.. eine zeichenklasse -> gefolgt von einem der zeichen zwischen den eckigen klammern (hier also leerzeichen, der backslash escaped das leerzeichen?? *wunder*.. ich bin verwirrt.. wer klärt mich mal auf.. ??)

gefolgt von nem leerzeichen
gefolgt von genau zwei ziffern, was vermutlich blödsinn ist... denn wir suchen ja auch tage von 1 - 9.. gefolgt von einem . (der . muss escaped werden mit \.. sonst stünde er für ein beliebiges zeichen) gefolgt von 2 ziffern gefolgt von einem punkt gefolgt von 4 ziffern gefolgt von genau <\/a>, wobei / durch \ escaped wird, weil es als delimiter verwendet wurde.


sooooo.. alle klarheiten beseitigt ;-) ???

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel

Geändert von highrise (31-10-2006 um 05:19 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 31-10-2006, 13:00
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

0 ist auch eine Dezimalzahl also \d{2} und kein Blödsinn.

Manche haben IgnorePatternWhitespace / x on als standardeinstellung --> whitespaces müssen explizit markiert werden. Die Zeichenklasse dient aus diesem Grunde der Übersicht damit klar ist was markiert ist.
Mit Zitat antworten
  #9 (permalink)  
Alt 31-10-2006, 13:01
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wundervoll.. das wollte ich wissen..

dass 0 ein decimal ist, ist klar.. aber was ist mit diesem format: 3.12.2006 (ohne führende null.. )

dan gehts nicht..

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #10 (permalink)  
Alt 31-10-2006, 16:31
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

wer beim Monat eine führende Null hat wird ja wohl diese beim Tag nicht weglassen
Mit Zitat antworten
  #11 (permalink)  
Alt 31-10-2006, 18:04
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

klingt logisch.. würde ich dir zustimmen, wenn ich den programmiere kennen würde..
allerdings ist logik keine garantie.. sogesehen, ist beim monat auch noch ein fehler im regex, denn der könnte ja ebenfalls ohne führende null da stehen... sicherer ist, beide zu fangen.. und gerade mal ein paar zeichen mehr regex..

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #12 (permalink)  
Alt 31-10-2006, 18:10
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

schau mal im Beispiel
Mit Zitat antworten
  #13 (permalink)  
Alt 31-10-2006, 18:15
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wenn du jetzt wirklich aus drei einzelnen einträgen auf ein ganzes file schließen willst, dann gute nacht.. ich hae es schon sooooo oft erlebt, dass dann wie der teufel es will mal wieder einige wenige einträge sich eben nicht an das beispiel halten.. sei es, weil sie aus ner früheren version stammen oder warum auch immer..
warum denn eine mögliche situation nicht abfangen, wenn es kaum mehr aufwand bedeutet, sondern sie einfach wegdiskutieren?
sotosay müsste man streng genommen auch nur drei exakte daten prüfen, weil andere im beispiel nicht enthalten sind.. anyway...
es macht gerade mal ein paar zeichen mehr..
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #14 (permalink)  
Alt 31-10-2006, 19:06
ThE_-_BliZZarD
 Newbie
Links : Onlinestatus : ThE_-_BliZZarD ist offline
Registriert seit: Oct 2006
Beiträge: 25
ThE_-_BliZZarD ist zur Zeit noch ein unbeschriebenes Blatt
Standard

okay okay, wenn ihrs haben wollt^^
ich habe eigentlich alles durchgeguckt, und es war alles so, aber kann sein das ich mich irre..

habs mal angehängt.
Angehängte Dateien
Dateityp: txt tabelle.txt (51,3 KB, 6422x aufgerufen)
Mit Zitat antworten
  #15 (permalink)  
Alt 31-10-2006, 19:09
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

sooo.. in dem punkt sieht es wohl so aus, dass alle einstelligen daten tatsächlich eine führende null besitzen...

habe allerdings folgende zeile gefunden:

<td class="oben">01.01.2006</td>

da fehlt das leerzeichen.. ergo müssen wir da noch einmal korrigieren, und hinter [\ ] noch ein ? setzen (einmal oder kein mal)

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
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

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:52 Uhr.