Portal > Foren > PHP > PHP-Programmierung > [regex] Sicherstellen dass bestimmter String in .* nicht vorkommt
Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 01.10.2008, 21:21 Nach oben    #1
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 397
Standard [regex] Sicherstellen dass bestimmter String in .* nicht vorkommt

Ich versuche gerade eine aus MS Word exportierte HTML-Datei zu verbessern.
Offenbar macht Word Aufzählungen sehr speziell...
html Code:
  1. <p class="MsoNormal" style="margin-top:6.0pt">
  2.                 FooBarFoo
  3.             </p><p class="MsoNormal" style="margin-top:6.0pt;margin-right:0cm;margin-bottom:0cm; margin-left:17.85pt;margin-bottom:.0001pt;text-indent:-17.85pt">
  4.             <span style="font-family:Symbol">·<span style="font:7.0pt &quot;Times New Roman&quot;">        </span></span>
  5.             Test
  6.             </p><p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt">
  7.                 <span style="font-family:Symbol">·<span style="font:7.0pt &quot;Times New Roman&quot;">        </span></span>
  8.                 1234
  9.             </p><p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt">
  10.  
  11.                 <span style="font-family:Symbol">·<span style="font:7.0pt &quot;Times New Roman&quot;">        </span></span>
  12.                 Miau
  13.             </p><p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt">
  14.                 <span style="font-family:Symbol">·<span style="font:7.0pt &quot;Times New Roman&quot;">        </span></span>
  15.                 Wuff
  16.             </p>
Schlimm...
Ich versuche das so zu verbessern:
PHP-Code:
$content preg_replace('#\<p[^\<]+\>.*·\<span[^\<]+\>[^\<]+\</span\>\</span\>(.*)\</p\>#sU''<ul><li>${1}</li></ul>'$content);
$content str_replace('</ul><ul>'''$content); 
Das Problem ist jetzt nur, dass der Text "FooBarFoo" spurlos verschwindet. Klar, er ist im ersten ".*" ja enthalten (obwohl das "U" am Ende doch die Gier unterdrücken soll...)

Wie kann ich das verhindern? Ich müsste irgendwie sagen könne ".* aber kein <p> darf vorkommen"...
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.10.2008, 07:39 Nach oben    #2
Lutz Mahlstedt
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 827
Standard

Ich habe deinen RegEx mal etwas angepasst:

Code:
°<p[^>]*>[\s]*<span[^>]*>.*</span></span>(.*)</p>°sU
Funktioniert bei mir erste Sahne! :) Ich kann zwar nicht genau sagen, was bei deinem jetzt schief läuft, aber ein paar Dinge sind mir aufgefallen:
- "<" und ">" müssen nicht escaped werden, das macht den RegEx schonmal übersichtlicher.
- Man sollte innerhalb von "<p>" nicht nach "[^<]" suchen lassen, sondern nach "[^>]", denn er soll ja nach innerhalb von "<p>" nicht vorzeitig geschlossen werden.
- Was sollte dieses Zeichen: "<p[^\<]+\>.*·\<span" bedeuten? Kann ich momentan nicht so richtig nachvollziehen, wozu das da steht!?

Letztendlich funktioniert es jedenfalls so, wie ich es angegeben habe - auch mit dem Ungreedy. Warum deiner nicht so hundertprozentig hingehauen hat könnte ich zwar versuchen rauszufinden, aber das kostet mir ein bisschen zuviel Zeit wenn man bedenkt, dass das Problem eigentlich schon gelöst ist!? :)
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.10.2008, 22:36 Nach oben    #3
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 397
Standard

Danke
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Template Engine mit XML Victorious PHP-Programmierung 13 12.09.2008 00:36
Grafische Datenbankschnittstelle(Swing) zottel500 Desktop-Applikationen und Grafik 10 23.05.2008 10:50
Problem bei Verarbeitung von Templates (Eigene Klassen) dago PHP-Programmierung 21 31.08.2006 16:02
Symbolklassen festlegen anna Allgemeine Java-Programmierung 2 12.11.2005 11:30
Datei einlesen. cyberdevil87 Allgemeine Java-Programmierung 3 27.06.2005 09:22


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:46 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47