Perl-Frage - Zeilenumbrüche und Leerzeichen in einem Textfeld wie erkennen? - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Dienstag, 18.Juni.2002, 07:35.
    Perl-Frage - Zeilenumbrüche und Leerzeichen in einem Textfeld wie erkennen?

      Hallo,
      was wird bei length($var) alles gezählt und wie werden bei importiertem Text in nem db-Feld bspw. aus Word die Zeilenumbrüche und Absatzendmarken behandelt?
      Wird "harter" Zeilenumbruch genauso wie ne Absatzendmarke behandelt? Ist ne Absatzendmarke und/oder ein harter Zeilenumbruch jeweils ein Zeichen?
      Und wie kann man ggf. die Zeilen in einem Datenbankfeld zählen (irgendwas mit split /\/n/...??)
      Hintergrund: Möchte eine Routine zur mehrseitigen Ausgabe langen Textes so verfeinern, daß Zeilenumbrüche wie Leerzeichen behandelt werden um zu erreichen, daß der augegebene Seitentext auf den einzelnen Seiten relativ gleichlang wird und Wortgrenzen auch bei Vorliegen eines Zeilenumbruches am Wortende erkannt werden (Wortgrenze=Leerzeichen, bisher so gabaut:
      ---schnipp---
      $laenge=2000;
              $Ende = substr($Meldung, $laenge);
              $Stop = index($Ende,"\ "); Wortgrenze suchen
              $Ende = substr($Ende, 0, $Stop);
              $Anfang = substr($Meldung, 0, $laenge);
      $ausgabetext_fuer_seite[n]=$Anfang.$Ende;
      
      ---schnapp---
      Danke für Hilfe
      Ruben


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Dienstag, 18.Juni.2002, 07:35.
    Perl-Frage - Zeilenumbrüche und Leerzeichen in einem Textfeld wie erkennen?

      Hallo,
      was wird bei length($var) alles gezählt und wie werden bei importiertem Text in nem db-Feld bspw. aus Word die Zeilenumbrüche und Absatzendmarken behandelt?
      Wird "harter" Zeilenumbruch genauso wie ne Absatzendmarke behandelt? Ist ne Absatzendmarke und/oder ein harter Zeilenumbruch jeweils ein Zeichen?
      Und wie kann man ggf. die Zeilen in einem Datenbankfeld zählen (irgendwas mit split /\/n/...??)
      Hintergrund: Möchte eine Routine zur mehrseitigen Ausgabe langen Textes so verfeinern, daß Zeilenumbrüche wie Leerzeichen behandelt werden um zu erreichen, daß der augegebene Seitentext auf den einzelnen Seiten relativ gleichlang wird und Wortgrenzen auch bei Vorliegen eines Zeilenumbruches am Wortende erkannt werden (Wortgrenze=Leerzeichen, bisher so gabaut:
      ---schnipp---
      $laenge=2000;
              $Ende = substr($Meldung, $laenge);
              $Stop = index($Ende,"\ "); Wortgrenze suchen
              $Ende = substr($Ende, 0, $Stop);
              $Anfang = substr($Meldung, 0, $laenge);
      $ausgabetext_fuer_seite[n]=$Anfang.$Ende;
      
      ---schnapp---
      Danke für Hilfe
      Ruben

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 18.Juni.2002, 13:52.
    Re: Perl-Frage - Zeilenumbrüche und Leerzeichen in einem Textfeld wie erkennen?

      1 Zeichen ist 1 Zeichen ;-) Aber vielleicht wichtig zu wissen: DOS/Windows und UNIX/Linux behandeln Endungen unterschiedlich: Windows macht dort unsinnigerweise 2 Zeichen: \r\n, UNIX nur eins: \n (nicht /n! so hast dus im split geschrieben, das wäre richtig so: split /\n/,...) wird bei length auch als 1 Zeichen gezählt, \r\n als 2... baseportal gibt sich Mühe \r\n am Ende in \n zu wandeln, also dürftest Du normalerweise nur auf \n treffen.

      Deinen Code versteh ich nich ;-) Um "Zeilenumbrüche wie Leerzeichen" zu behandeln reicht ein:

      $Meldung=~ s/\n/ /g;
      

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Mittwoch, 19.Juni.2002, 08:10.
    Re: Perl-Frage - Zeilenumbrüche... Naja, fast klar, aber noch nicht ganz

      Danke Christoph, aber mein Problem ist damit noch nicht gelöst.
      Hab mich glaub ich auch nicht ganz klar ausgedrückt.
      Es soll aus einem Datenfeld ein Teilstring bestimmter Länge extrahiert werden. Dabei sollen zum einen die "harten" Absatzendmarken entfernt und in <br> sowie mehrere aufeinanderfolgende <br>'s in eins gewandelt werden. (Hintergrund: Wenn mittels Paste und Copy Text in das Datenfeld aus bspw. Word eingefügt wird, der mit <enter> per Hand umgebrochen wurde - was leider von vielen so gemacht wird - kriegt man mit convert_br immer unerwünschte br's rein. Außerdem wird jede Zeile, die in der Textverarbeitung automatisch umgebrochen wurde bei Einfügen mittels Paste u. Copy auch umgebrochen obwohl sie es nicht soll!
      Das Problem ist also größer, anschaun kannst du dir die Baustelle mal unter http://dabadu.de/baseportal/kirche/andacht
      Der erste angezeigte Datensatz ist ein Testeintrag, die Zeilen sind nummeriert nach dem, wie sie geschrieben sind, die Ausgabe ist ganz anders -:((
      Vielleicht gibts ja ne Lösung dafür.

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 19.Juni.2002, 14:15.
    Re: Perl-Frage - Zeilenumbrüche... Naja, fast klar, aber noch nicht ganz

      Sags doch gleich ;-)

      > Es soll aus einem Datenfeld ein Teilstring bestimmter Länge extrahiert werden.
      

      $x=substr($x, 0, $Laenge_des_Teilstrings);

      > Dabei sollen zum einen die "harten" Absatzendmarken entfernt und in <br>...
      

      $x=~ s/\n/<br>/g;

      wobei ich noch nich 100% verstehe was Du mit "harten Absatzendmarken" meinst...

      > ...sowie mehrere aufeinanderfolgende <br>'s in eins gewandelt werden
      

      $x=~ s/(<br>)+/<br>/g;


      Weiss nich obs das jetzt is, was Du Dir wünschst, versteh Deine Baustelle auch nich ,-)

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Donnerstag, 20.Juni.2002, 12:51.
    Re: Perl-Frage - Zeilenumbrüche... Problem kann umgangen werden

      Muß die Wärmne sein daß ich mich nicht so richtig ausdrücken kann -;)
      Mit dem Teilstring das ist klar und funnzt.

      Mit den br's ist komisch:
      Wenn man aus MSWoks, V.4.5 heraus per paste und copy den Text in die db einfügt, stimmen die br's nicht, es wird irgendwie ein Zeilenumbruch am Ende jeder Zeile des Seiten-Layouts mit eingefügt, bei MSWord97 und OpenOfficeOrg 1.0 klappts.
      Ich hab mal die Baustelle angepaßt und Screenshots von den jeweiligen Anwendungen und dem Text eingefügt - kannsts ja nochmal anschaun (url: http://dabadu.de/cgi-bin/baseportal.pl?htx=/dabadu.de/kirche/andacht )

      Also werde ich die Nutzer entsprechend informieren müssen, daß sie aus den richtigen Programmen ihren Text reinkopieren.
      Danke für die Mühe und Antwort.
      CU
      Ruben

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 20.Juni.2002, 13:22.
    Re: Perl-Frage - Zeilenumbrüche... Problem kann umgangen werden

      Vielleicht ändert MSWorks etwas an den Zeilenenden...

      Bei Deiner Baustelle haste Dir ja auch ne schöne Mühe gemacht, aber es kommt immer noch nich so ganz raus, was genau das Problem ist ;-) Denn der HTML-Text sieht bei mir _genauso_ aus wie in dem screenshot - ist das nicht gewünscht?

      Es gibt aber sicher eine Lösung, interessant wäre mal folgendes: Wie sieht der HTML-Text aus, wie er jetzt aussieht - und _nicht_ aussehen soll und wie _sollte_ er aussehen? Wenn Du mir die 2 Vergleiche baust, dann kann ich Dir sagen wie man das eine in das andere umwandelt... (hoff ich ;-) )

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Donnerstag, 20.Juni.2002, 16:08.
    Re: Perl-Frage - Zeilenumbrüche... Unterschiede zwischen Works und Word

      yepp, nicht unser Tag oder?
      Aber schau dir mal die Ausgabe des aus Works und des aus Word importierten Textes nebeneinander an - da sieht man es.
      Es soll nur ein Zeilenumbruch bei de Absatzendmarken (die komischen Zeichen an den Enden der Zeilen - weiß leider nicht wie die heißen) und bei Zeilenumbruchmarken (ist der Pfeil, wie er auf der Enter-Taste ist) erfolgen.
      Hier der html-Text aus dem Text von Works kopiert wie er nicht sein soll (zuviel br's, es sollen nur die vor den Zeilenzahlen und am Ende rein):
      (1) Das ist eine erste zeile mit Hand umgebrochen,<br>irgendwo soll dann das Ende sein, hier. Und das<br>Seitenlayout aus der Textverarbeitung sollte keine Rolle<br>spielen. Nur die tatsächlich eingefügten Umbrüche sollen zu<br>erkennen sein - und das ist immer anders.<br>(2) und das ist die zweite zeile, so lang wie sie ist wird sie<br>angezeigt aber dann kommt jetzt<br>(3) eine neue Zeile. Und hier eine Zeile im Anschluß, die<br>mal nicht per Hand umgebrochen ist hier gehts dann weiter.<br>(4) Zeilenumbruch vor dem Wort Zeilenumbruch in der<br>Textverarbeitung, aber hier wieder einfach weiter<br><br>(5) Neuer Absatz, absichtlich, soll aber nur mit br<br>interpretiert werden, mal sehen was da herauskommt. So<br>das wars.<br>

      Und híer der aus Word reinkopierte:

      (1) Das ist eine erste zeile mit Hand umgebrochen, irgendwo soll dann das Ende sein, hier. Und das Seitenlayout aus der Textverarbeitung sollte keine Rolle spielen. Nur die tatsächlich eingefügten Umbrüche sollen zu erkennen sein - und das ist immer anders.<br>(2) und das ist die zweite zeile, so lang wie sie ist wird sie angezeigt aber dann kommt jetzt<br>(3) eine neue Zeile. Und hier eine Zeile im Anschluß, die mal nicht per Hand umgebrochen ist hier gehts dann weiter.<br>(4) Zeilenumbruch vor dem Wort Zeilenumbruch in der Textverarbeitung, aber hier wieder einfach weiter<br>

      Kann mir nicht vorstellen, wie man das hinkriegen könnte. Du hast schon recht, irgendwie fügt Works da Zeilenumbrüche ein - und offensichtlich abhängig von der Zeilenbreite des Seitenlayouts.
      AAABER: Da es aus Word und OpenOffice heraus klappt, können wir das erst mal lassen.

      Kennst du eigentlich eine Perl-Routine, die man mit nutzen könnte um RTF- oder andere Textdateien als Datei direkt zu importieren - also ein Feld vom Typ Datei anrichten und den Inhalt dann in html eingebettet ausgeben lassen?
      CU
      Ruben

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 20.Juni.2002, 17:56.
    Re: Perl-Frage - Zeilenumbrüche... Unterschiede zwischen Works und Word

      > AAABER: Da es aus Word und OpenOffice heraus klappt, können wir das erst mal lassen.
      

      Prima ;-)


      text -> html: man kann doch bei word direkt als html speichern lassen, nich?

     Antworten


     
 Liste der ersten 150 Einträge:Einklappen Zur Eingabe 
 Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.12s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!