AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Tabs am Anfang einer Zeile durch Leerzeichen ersetzen
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Tabs am Anfang einer Zeile durch Leerzeichen ersetzen

Ein Thema von faux · begonnen am 9. Mai 2006 · letzter Beitrag vom 9. Mai 2006
Antwort Antwort
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

[PHP] Tabs am Anfang einer Zeile durch Leerzeichen ersetzen

  Alt 9. Mai 2006, 20:21
Hallo!

Ich habe folgendes Problem: Ich erzeuge mittels einem PHP-Skript ein HTML-Output, welches mit Tabs formatiert ist. Wahlweise soll der Benutzer meines Skripts auch die Formatierungstabs in Leerzeichen umwandeln können. Das habe ich mit folgendem Code gelöst:

Code:
[color=#000080][i]$content[/i][/color] = preg_replace([color=#008000]"[\t]"[/color], str_repeat([color=#008000]' '[/color], [color=#000080][i]$space[/i][/color]), [color=#000080][i]$content[/i][/color])
Jedoch werden mit diesem Code auch Tabs innerhalb der HTML-Tags ersetzt, würde ich mal sagen, ich will aber nur die Tabs ersetzen, welche am Anfang der Zeile stehen. Also á la @^[\t]@m. Jedoch wird bei diesem Code nur das 1. Tab ersetzt, da das 2. Tab ja nichtmehr an den Zeilenanfang grenzt. Mit @^[\t]*@m werden zwar alle Tabs ersetzt, jedoch weiß ich nicht wieviele ursprünglich da waren, also wird der Abstand, welcher vorher durch mehrere Tabs formatiert wurde, jetzt nur noch durch die anzahl der Leerzeichen formatiert, welche einem Tab entsprechen.
Wie kann ich das Problem lösen?

Grüße
Faux

P.S. Ich habe keines der Beispiele getestet; es sind nur "Gedankenexperimente", also es kann sein, dass ich mich irre.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: [PHP] Tabs am Anfang einer Zeile durch Leerzeichen erset

  Alt 9. Mai 2006, 20:27
Vielleicht so?

Code:
/^\t*?\t([^\t]+.*)/
Ersetzen durch:

Code:
str_repeat(' ', $space) + '\1'
edit: Funktioniert nicht.
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
Benutzerbild von KingIR
KingIR

Registriert seit: 19. Feb 2006
81 Beiträge
 
Delphi 2006 Professional
 
#3

Re: [PHP] Tabs am Anfang einer Zeile durch Leerzeichen erset

  Alt 9. Mai 2006, 20:38
mom, erstmal richtig lesen, dann antworten *korrigier* sorry

So, jetzt aber:

Code:
$repl_func = create_function('$match', 'return str_repeat(\' \', ' . (int)$space . ' * strlen($match[0]));');

$new = $content;
do
{
  $prev = $new;
  $new = preg_replace_callback('/^\t+/m', $repl_func, $prev);
}
while($new != $prev);

$content = $new;

unset($new, $prev, $repl_func);
  Mit Zitat antworten Zitat
Antwort Antwort


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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz