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 Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #16 (permalink)  
Alt 04-06-2009, 11:29
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Question Zeilen formatieren mit RegEx oder anders.



Ich möchte alle Dateien in einem Ordner für die weitere Verwendung formatieren.
Die Dateien sind bzg. der Leerzeilen einheitlich vorformatiert.

Istzustand :
Zitat:
127. Titel Text (Text) (Text)


Originaltext Text Text
Deutscher Text Text Text
Originaltext Text Text
Deutscher Text Text Text
Originaltext Text Text
Deutscher Text Text Text
Originaltext Text Text
Deutscher Text Text Text

Originaltext Text Text
Deutscher Text Text Text
Originaltext Text Text
Deutscher Text Text Text
Originaltext Text Text
Deutscher Text Text Text
Originaltext Text Text
Deutscher Text Text Text

Originaltext Text Text
Deutscher Text Text Text
Originaltext Text Text
Deutscher Text Text Text
Originaltext Text Text
Deutscher Text Text Text
Sollzustand :
Zitat:
<h1>127. Titel Text</h1><br />
<em>(Text) (Text)</em><dl>


<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd>
<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd>
<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd>
<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd></dl><dl>

<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd>
<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd>
<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd>
<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd></dl><dl>

<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd>
<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd>
<dt>Originaltext Text Text</dt>
<dd>Deutscher Text Text Text</dd></dl>
Wie zu sehen, soll die erste Zeile, die mit einer Zahl beginnen muß
und damit als Titel identifiziert ist, als h1 Zeile deklariert werden
mit der anschließenden Eröffnung einer <dl> .

Wenn nach dem Titeltext noch Text in ()rn kommt, soll dieser mit <br />
von der h1 Zeile getrennt werden und in <em></em> gesetzt werden.

Wie in allen anderen Zeilen auch sollen alle mehrfachen Leerzeichen
ersetzt und alle eventuellen Punkte. am Ende der Zeile entfernt werden.

Die anschließenden Zeilen sollen abwechselnd mit <dt></dt> und <dd></dd>
umschlossen werden. Wenn der deutsche Text noch nicht da ist, soll
<dd></dd> eingefügt werden.

Am Ende einer jeden Strophe soll mit </dl> geschlossen und mit <dl>
eine neue eröffnet werden.

Bei der letzten Strophe braucht natürlich nur mit </dl> geschlossen
werden.

Die Abstände der dl werden über css definiert.

Soweit die Aufgabenstellung.

Regeln:

Wenn Titelzeile ohne () dann <h1>Titelzeile Text</h1><dl>

Wenn Titelzeile mit () dann:
<h1>Titelzeile Text</h1>
<em>(Text) (Text)</em><dl>

Erster Treffer einer Strophenzeile und alle weiteren Strophenzeilennummern
+ 2 solange, bis + 2 eine Leerzeile, nähmlich die Trennzeile zwischen
den Strophen trifft; all diese Zeilen sollen mit <dt></dt> umschlossen
werden.

Die jeweils nächste dieser Trefferzeilen soll mit <dd></dd> umschlossen
werden, außer der letzten, wenn nachher noch Text, also eine nächste
Strophe, kommt.
Diese letzte Strophenzeile soll also so <dd>Text</dd></dl><dl> formatiert werden.
Wenn kein Text mehr kommt, haben wir die letzte Zeile im Dokument;
diese soll mit <dd>Text</dd></dl> umschlossen sein.

Mein erster Lösungsansatz:

PHP-Code:
$dir "phptest/";

if (
is_dir($dir)) { 
    if (
$dh opendir($dir)) {
        while ((
$file readdir($dh)) !== false) { 
            if(
$file != "." && $file != "..") { 
                
$file_line file$dir.$file);
                
$zz count$file_line);
                foreach( 
$file_line as $key => $line) { 
                    if( 
$key == 0) {                    # Titelzeile formatieren
                        
$line '<h1>'.$line;
                        
$line str_replace("\n""</h1><dl>\n"$line);
                        
$line preg_replace('/\s\s+/'' '$line);
                        echo 
$line;
                    } 
                    if( 
$key && $key $zz) {        # nächste Zeilen auswählen
                        
if( preg_match'/^\s/'$line)) {# Leerzeile gefunden
                            
echo "<br>";
                        }
                        if( 
preg_match'/\S/'$line)) {# Erste Strophenzeile gefunden
                            
                            
if( bcmod($key,'2') == ) {# gerade Zeilennumer Deutsch
                                
echo "Deutsch $line";
                            } 
                            else {                        
# ungerade Zeilennummer Original
                                
echo "Original $line";
                            }
                        } 
                    }
                }
            }
        }
    }
        
closedir($dh);

Dieser Ansatz verfolgt die Umsetzung der minimalen Anforderungen.

Leider habe ich ja durch die eine Leerzeile zwischen den Strophen
wechselnde Eigenschaften der Zeilennummern, so das der Zugriff so
nicht funktioniert. Habe schon versucht, einen Umschalter einzubauen,
habe aber keine Stelle gefunden, an dem ich Ihn hätte einbauen können.
Ich kann natürlich im Schritt vorher zwei Zeilen als Strophentrennung
einstellen, dann würde der Zugriff funktionieren.
Da ich aber nicht nur fummeln, sondern etwas lernen möchte, würde mich
ein Lösungsvorschlag interessieren.


Da ich eine blasse Ahnung von RegEx im vorherigen Beitrag erlangt habe,
denke ich, das auch hier RegEx einen anderen Zugriff ermöglicht. Dabei
ging es darum, Zeichengruppen im RegEx zu definieren, die später mittels
einer Abfrage fallspezifisch ersetzt werden.

Wir haben also grundsätzlich 4 Zeilenarten:

1. Titelzeile, eventuell mit Klammern, ist immer die erste Zeile
2. Leerzeilen als Element-trenner, die nicht bearbeitet werden brauchen
3. Originaltext
4. Eventuell deutscher Text unter dem Originaltext

Wie ich das jetzt in einem regulären Ausdruck unterbringen soll, ist
mir leider noch ein Rätsel.

Kann jemand weiterhelfen?

Gruß

Estrela
__________________
Denk positiv.
Mit Zitat antworten
  #17 (permalink)  
Alt 04-06-2009, 18:55
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Immer noch gleiche Baustelle -> *zusammenführ*
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #18 (permalink)  
Alt 04-06-2009, 20:04
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Question

Zitat:
Zitat von Estrela Beitrag anzeigen
Wir haben also grundsätzlich 4 Zeilenarten:

1. Titelzeile, eventuell mit Klammern, ist immer die erste Zeile
2. Leerzeilen als Element-trenner, die nicht bearbeitet werden brauchen
3. Originaltext
4. Eventuell deutscher Text unter dem Originaltext
Woher weißt du, ob deutscher Text existiert? Warum willst du immer mit RegEx lösen? Bist du z.Z. RegEx-*eil oder was?
Mit Zitat antworten
  #19 (permalink)  
Alt 04-06-2009, 23:52
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo asp2php.

Grundsätzlich bin ich an einer Lösung der Aufgabe interessiert. Ich finde einfach die Möglichkeiten von RegEx gut und möchte da was dazulernen.
Ist halt nur nicht so einfach, aus einer Vorlage viele Fälle abstrakt abzuleiten.
Der deutsche Text steht da, wenn er da ist. Soll heißen, er kann, muß aber nicht vorhanden sein.

Gruß

Estrela
__________________
Denk positiv.
Mit Zitat antworten
  #20 (permalink)  
Alt 05-06-2009, 00:08
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Estrela Beitrag anzeigen
Der deutsche Text steht da, wenn er da ist. Soll heißen, er kann, muß aber nicht vorhanden sein.
... und wie unterscheidet er sich vom englischen Text? Sagt nicht dass du 'ne Texterkennungsoftware in PHP geschrieben hast, der das beim Einlesen automatisch erkennt!
Mit Zitat antworten
  #21 (permalink)  
Alt 05-06-2009, 09:42
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo asp2php.

Nein, natürlich nicht.
Ich bekomme die Originaltexte und übersetze sie. Jetzt soll aber das Script so flexibel sein, auch noch nicht übersetzte Texte zu formatieren.
Die einzige Erkennung, abgesehen von den Sonderzeichen der brasilianischen Sprache( die in einer Zeile auftauchen können, aber nicht müssen ), ist die, das der deutsche Text eine Zeile unter der originalen Sprache steht, bzw. stehen soll und per css farblich zurückgenommen gestalltet wird.

Gruß

Estrela
__________________
Denk positiv.
Mit Zitat antworten
  #22 (permalink)  
Alt 05-06-2009, 10:08
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Estrela Beitrag anzeigen
... das der deutsche Text eine Zeile unter der originalen Sprache steht, bzw. stehen soll und per css farblich zurückgenommen gestalltet wird.
Toll! Und du meinst PHP "sieht" das? Solange du nicht irgendwas machst, damit PHP das "sieht" kannst du erstmal vergessen, denn wie soll man ein Algorithmus aufstellen, wobei Entscheidungskriterien überhaupt nicht da sind.
Mit Zitat antworten
  #23 (permalink)  
Alt 05-06-2009, 10:59
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo asp2php.

Wieso ist kein Kriterium da?.

Die erste Textzeile nach dem Titel ist der Originaltext.
In der nächsten Zeile ist entweder Text oder nicht. Auf jeden Fall soll mit <dd></dd> umschlossen werden.
Solange, bis die Strophentrennung erkennbar wird.
Dann ist die erste Zeile der Strophe wieder der Originaltext.
Das war ja auch der Ansatz meines ersten Lösungsvorschlags orientiert an den Zeilennummern. Leider wechseln diese ja in jeder Strophe durch die eine Leerzeile( wenn deutscher Text da ist) ihr Vorzeichen( gerade Zeilennummer, ungerade Zn), so das der Zugriff so nicht funktioniert.

Gruß

Estrela
__________________
Denk positiv.
Mit Zitat antworten
  #24 (permalink)  
Alt 05-06-2009, 11:06
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ah, jetzt verstehe ich, d.h. wenn keine Übersetzung da ist, bleibt die Zeile leer, richtig? Und wo ist das Problem? Die Tags drum rum zu bauen? Ist nicht wahr, oder? Wenn du schon geschafft hast, Leerzeilen dazwischen zu bauen, warum nicht mit der gleichen Vorgehensweise die Tags einzubauen?
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
reg ex, regex, reguläre ausdrücke


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JavaScript-PopUp in PHPCode nach Bedingung öffnen Groundhog PHP Developer Forum 4 25-08-2007 09:51
bereiche eines templates nach bedingung erst einblenden lx-club PHP Developer Forum 13 26-01-2004 09:25
Leerzeilen aus *.html datei mit regex löschen. timepoint5 PHP Developer Forum 8 30-06-2003 12:16
nach einer bedingung eine email versenden gramy PHP Developer Forum 0 24-05-2002 10:44
::> url aufruf nach erfüülen von bedingung <:: ohario PHP Developer Forum 4 10-07-2001 15:47

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 23:07 Uhr.