php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.02.2006, 23:10  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard "Code Müll" entfernen

Hi

Ich habe eine Template Klasse geschrieben die eigentlich gut funktioniert.
Nun hab ich nur das Problem, dass viele unnötige Sachen erzeugt werden.

z.Bsp:
PHP-Code:
<? echo $lala?><? echo $lili?>
?><? ist absolut unnötig!

Wie kann ich dies nun am besten entfernen ?
Bei solchen direkt anneinander gereihten Befehlen mach ich es einfach so:

PHP-Code:
preg_replace("/\?\>\<\?/sim"" "$this->tpl); 
Das funktioniert auch wunderbar.
Nur leider wenn dort mehrere Leerzeichen oder Absätze sind funktioniert das eben nicht!

Wie kann ich es umschreiben, sodass es auch für diese gilt ?


Gruß SimonErich
__________________
Der G-Translator
Simon9990 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.02.2006, 00:00  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Wie? Du erzeugst das ?><? erst mit deiner Template-Klasse und willst dass dann nach dem Übersetzen der Templates wieder rauslöschen?

Basti
Basti ist offline  
Alt 07.02.2006, 00:07  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

jo, mal wieder:
beseitige nicht das symptom, sondern löse das problem.
axo ist offline  
Alt 07.02.2006, 00:10  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard

Ja es ist so wenn jemand eine Variable in dem Format in das Template schreibt.
Code:
{$lala}
dann wird diese zu
Code:
<? echo $repl_arr['lala']; ?>
Und wenn nun jemand z.Bsp:

Code:
{$lala}{$lili}
schreibt, dann wird daraus
Code:
<? echo $repl_arr['lala']; ?><? echo $repl_arr['lili']; ?>
____________________________

@axo

Und wie sollte ich das am besten machen ?
Ich replace es gleich mit preg_replace!

Ich mein klar könnte ich in der Schleife immer in einen String festhalten ob <? bereits geöffnet ist oder nicht aber wäre das nicht viel komplizierter und Zeitaufwändiger ?
__________________
Der G-Translator
Simon9990 ist offline  
Alt 07.02.2006, 00:16  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Na, wenn da Leerzeichen oder Absätze drinnen sind, dann sollten die doch wohl auch drinnen bleiben. Außerdem wird sich doch nachher niemand den Cache deiner Template-Engine anschauen oder gar editieren, oder?

Übrigens musst du <?php anstatt <? schreiben, es sei denn, du möchtest, dass alle Benutzer die Short-Open-Tags auch erlauben und behandelst die XML-Deklaration in den Templates entsprechend.

Basti

PS:
Eine andere Möglichkeit wäre noch, den kompletten Template-Code in ein echo-Statement zu setzen. *g
Also erst alle double quotes und Dollar-Zeichen escapen, dann die Werte in den geschweiften Klammern durch die PHP-Vars ersetzen und dabei die geschweiften Klammern lassen, aber Leerzeichen darinnen rauslöschen.

Hängt dann natürlich an den Kontrollstrukturen, aber wenn du die umsetzen wolltest, könntest du ja auch gleich Smarty nehmen.
Basti ist offline  
Alt 07.02.2006, 00:22  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard

Ja sry hab im Template <?php .
Naja die Absätze sollten schon mit den gleichen Abständen wieder eingesetzt werden.
Eben nur ?><? sollte nicht mehr da sein.
Es geht mir eigentlich nicht nur ums graphische.
Aber ich denke wenn dies nun eine große HTML Datei ist und es werden viele Template Tags verwendet, dann wird das die Dateigröße schon beeinflussen.
Zwar nicht extrem aber doch!


_______________

Ja eben ich hab Funktionen,... drinn.

Ich könnte smarty verwenden
Will es aber nicht.
Hab eben versucht selbst eine Templateklasse zu basteln und ist mir eben bis auf ein paar Schönheitsfehler gelungen.
Hab glaub ich das was für meine Bedürfnisse ausreicht in meiner Klasse drinn.

_______________

Gibt es keine Möglichkeit irgendwie Leerzeichen so zu definieren ?
([\n]LEERZEICHEN*)
Oder ähnlich ?
__________________
Der G-Translator
Simon9990 ist offline  
Alt 07.02.2006, 00:27  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Wie bitte? Das wird der Staun-Thread der Woche!

Angenommen, du hast da 50 Variablen drinnen und davon liegen 30 (!) direkt hintereinander, dann macht das (mal "?><?php") 210 Bytes, mal 100 Templates = 21 kB.

Das kannst du getrost vergessen!

Basti
Basti ist offline  
Alt 07.02.2006, 00:30  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard

Achso naja dann lass ich sie einfach drinn.
Dachte nur, das dies mehr Platz bräuchte
__________________
Der G-Translator
Simon9990 ist offline  
Alt 07.02.2006, 00:34  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

jo, aber permanente öffnende und schließende tags wirken sich erheblich performanceverschlechternd aus.

wenn man schon eine template-engine baut, gilt folgendes:
1. wie lang das 'kompilieren' braucht, ist erstmal nicht so wichtig.
genauso unwichtig ist die dateigröße auf der platte. wichtig ist 2.
2. das geparste template muss im vergleich zum ungeparsten erheblich schneller sein, sonst hätte man sich den ganzen template-engine-schmarrn sparen können.
3. zur zeit erinnere ich immer wieder an http://en.wikipedia.org/wiki/Reinven...e_square_wheel und erinnere in
diesem kontext daran, dass es nicht wenig fertige, getestete und wunderbar
funktionierende template engines gibt. software reuse rules, alles neuschreiben
um des neuschreibens willen ist was für dumme.
4. wenn du nicht deine eigene klasse verwendest, sondern auf standard-mittel
und bestehende libraries zurückgreifst, hilfst du nicht nur dir, sondern auch allen, die sich jemals mit deinem code beschäftigen müssen.
5. du erhöhst mit dem verwenden der standard-libraries auch den wert deiner
eigenen software, denn deine software wird dadurch leichter wiederverwendbar.
6. du lernst auch mehr, wenn du andere libraries verwendest.
7. dass die bestehenden libraries 'zu groß' sind, ist _kein_ argument gegen die verwendung.
8. ich behaupte auch (jetzt ohne beweis, ich weiß es einfach), dass
PHP-Code:
<?php echo $something ' ein langer klartext ' $somethingElse?>
deutlich schneller geparst wird als
PHP-Code:
<?php echo $something?>ein langer klartext <?php echo $somethingElse?>
... und dass du das system überdenken solltest.
9. php ist bereits eine template-sprache, also ist eine template-sprache für
eine template-sprache ein schlechtes zeichen.

nichts für ungut, aber guck dir lieber bestehende template-systeme an und
verwende die, wenn überhaupt. zum beispiel smarty, wenn's denn überhaupt
sein muss.
axo ist offline  
Alt 07.02.2006, 00:39  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Zitat:
Zitat von Simon9990
Hab glaub ich das was für meine Bedürfnisse ausreicht in meiner Klasse drinn.
Setzt du das error_reporting-Level vor dem Parsen runter oder wie vermeidest du Warnungen, wenn auf nicht existieende Array-Felder zugegriffen wird? Warum überhaupt Arrays?

Zitat:
Gibt es keine Möglichkeit irgendwie Leerzeichen so zu definieren ?
([\n]LEERZEICHEN*)
Oder ähnlich ?
Wozu? Du meinst, eine Reihe von 1-n Whitespaces zwischen ?> und <?php durch ein Leerzeichen ersetzen? Das müsste irgendwie sowas hier sein:

\?>(\s*)<\?php

Basti
Basti ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Alles html aus einem String entfernen? BartTheDevil89 PHP Tipps 2008 3 08.10.2007 15:12
Werte aus Array entfernen NetLook PHP Tipps 2006 18 23.10.2006 11:43
\n entfernen freitz PHP Tipps 2006 8 16.10.2006 11:27
Gefährlichen Code entfernen Davido PHP Tipps 2006 3 28.08.2006 13:05
Zeichen \n und \r entfernen madSoul PHP Tipps 2006 7 11.08.2006 07:54
preg_replace: Links entfernen phpfortgeschrittener PHP Tipps 2006 2 06.08.2006 21:10
Zeilenumbrüche aus DB entfernen madSoul PHP Tipps 2006 4 10.02.2006 13:06
html code beim schreiben in mysql db entfernen djrace PHP Tipps 2006 1 03.02.2006 20:33
Sonderzeichen (·) entfernen blinkster.de PHP Tipps 2005-2 2 10.10.2005 19:27
\ entfernen Stinger PHP Tipps 2005-2 3 10.07.2005 19:35
[Erledigt] preg_replace &lt;br /&gt; am ende eines strings entfernen PHP Tipps 2005 20 03.06.2005 08:48
[Erledigt] BB Code entfernen PHP Tipps 2005 2 25.04.2005 15:20
leere felder entfernen PHP Tipps 2007 14 04.01.2005 10:59
Variable entfernen Adrenochrom PHP Tipps 2005 2 02.01.2005 01:23
Zeichen aus eine, ".txt" File entfernen PHP Tipps 2004 2 28.06.2004 17:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
absätze und leerstellen in html code entfernen php, php müll entfernen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:44 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.