Muster für Leerzeichen
Sven
- php
1 ChrisB0 Sven0 Texter mit x0 Sven0 Texter mit x0 Sven
Hallo!
Ich tue mich noch schwer mit der Verwendung von Mustern. In meinem Anwendungsfall möchte ich solange Leerzeichen und Zeilenumbrüche entfernen bis ich auf ein Zeichen Treffe, das allerdings nicht im Gesamten Dokument, sondern nur zwischen einem fixem String und dem antreffenden Zeichen.
In Word werden HTML-Sites Grundsätzlich mit einem Zeilenumbruch und zich Leerzeichen nach einem <td> ausgespuckt, bevor der Inhalt der TD folgt. Eben diese Lücke möchte ich schlißen, sodass der Inhalt direkt dem <td> folgt.
Konkret
<td>
Blabla
soll werden zu
<td>Blabla
Nach dem TD suche ich mit !<td(.*?)>!
Hi,
In meinem Anwendungsfall möchte ich solange Leerzeichen und Zeilenumbrüche entfernen
\s - siehe http://www.php.net/manual/en/regexp.reference.backslash.php
In Word werden HTML-Sites Grundsätzlich
Vielleicht sollte man eher an der Stelle ansetzen - statt in von Word erzeugtem grauslichen Pseudo-HTML nachher rumzupfuschen, gleich einen ordentlichen Editor wählen ...?
MfG ChrisB
Hi,
In meinem Anwendungsfall möchte ich solange Leerzeichen und Zeilenumbrüche entfernen
\s - siehe http://www.php.net/manual/en/regexp.reference.backslash.php
Danke, darüber bin ich auch gestolpert. Aber scheinbar verstehe ich die Anwendung nicht. preg_replace("!<td(.*?)>!s","", würde ja auch das <td> ersetzen. Und Einzeilig wurde die Ausgabe trotzdem nicht?
In Word werden HTML-Sites Grundsätzlich
Vielleicht sollte man eher an der Stelle ansetzen - statt in von Word erzeugtem grauslichen Pseudo-HTML nachher rumzupfuschen, gleich einen ordentlichen Editor wählen ...?
MfG ChrisB
Das ist nicht drinn, denn die Anforderrung an das Script ist es Word-Dokumente verarbeiten zu können. Da ich .doc nicht zerstückeln kann, exportiere ich die .doc via MS Word zu .html
preg_replace("!<td(.*?)>!s","", würde ja auch das <td> ersetzen. Und Einzeilig wurde die Ausgabe trotzdem nicht?
Also mußt Du Dir das <td(.*?)> merken, in dem Suchmuster auch nach nachvolgendem whitespace und nachfolgendem nicht-whitspace suchen. Letzteres auch merken. Und dann ersetzt Du nicht durch nichts, sondern durch das Gemerkte. Oder Du machst es mit Look-around_assertions, dann kannst Du mit nichts ersetzen.
preg_replace("!<td(.*?)>!s","", würde ja auch das <td> ersetzen. Und Einzeilig wurde die Ausgabe trotzdem nicht?
Also mußt Du Dir das <td(.*?)> merken, in dem Suchmuster auch nach nachvolgendem whitespace und nachfolgendem nicht-whitspace suchen. Letzteres auch merken. Und dann ersetzt Du nicht durch nichts, sondern durch das Gemerkte. Oder Du machst es mit Look-around_assertions, dann kannst Du mit nichts ersetzen.
wuih >.<
Danke für die Antworten! Dann versuche ich mich da mal so durchzuhangeln.
Nur eine Frage: Warum funktioniert soetwas nicht?: preg_replace("!<td(.*?)>(.*)\s!s",""
Das in diesem Fall das <td(.*?)> mit ersetzt wird, ist diesmal sogar erwünscht.
Nur eine Frage: Warum funktioniert soetwas nicht?: preg_replace("!<td(.*?)>(.*)\s!s",""
Wie äußert sich "funktioniert nicht"?
Nur eine Frage: Warum funktioniert soetwas nicht?: preg_replace("!<td(.*?)>(.*)\s!s",""
Wie äußert sich "funktioniert nicht"?
Er schneidet eben ab dort an sämtliche Zeichen ab.
Das Problem ist aber gelöst, die Korrekte Variante lautet (\s+)