Funktion in regulärem ausdruck |
Maasda
Pixelschubser Threadstarter
Beiträge: 18 |
Ich weiss, dieses Thema gab es hier schonmal, aber ich bin daraus nicht schleu geworden:
Wie bekomme ich es hin, dass in folgendem Code das stück des Ersatzes noch durch die funktion shortURL() gejagt wird?
---
by Maasda/Julian
http://www.maasda.de
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Nutze preg_replace_callback - dort kannst du eine Funktion angeben, welche für jeden Treffer aufgerufen wird. Sie bekommt den Treffer als Array übergeben. Du mußt sie also selbst definieren. Im Gegensatz zum Modifier e (evaluate) in preg_replace verzettelt man sich nicht so sehr beim Escaping der diversen Quotes (JS, HTML, PHP).
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Maasda
Pixelschubser Threadstarter
Beiträge: 18 |
Danke, hat geklappt!
preg_replace_callback:
1: | $post[text] = preg_replace_callback("#(?\s]+)#si", "shortLink", $post[text]); |
Link-kürz-Funktion:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15: | // Link-Kuerzen
function shortLink($url)
{
if(strlen(utf8_decode($url[1])) > 50)
{
$linktext = substr($url[1],0,25)."...".substr($url[1],strlen(utf8_decode($url[1]))-20);
}
else
{
$linktext = $url[1];
}
$link = "".$linktext."";
return $link;
} |
---
by Maasda/Julian
http://www.maasda.de
Diese Nachricht wurde geändert von: Maasda |
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Fein Fein
Da du für Variablen den String immer unterbrichst könntest du außen rum auch Single Quotes/Hochkomma verwenden. Damit würdest du dir nochmal eine Runde Escaping der Double Quotes für die HTML-Attribute ersparen. Oder du nutzt Single Quotes für die HTML-Attribute.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Maasda
Pixelschubser Threadstarter
Beiträge: 18 |
Sind Single-Quotes für HTML-Attribute denn noch XHTML 1.1 (Strict) valid? Ich dachte, man dürfte nur Double-Quotes verwenden
Wie dem auch sei, die HTML-Attribute mach in allen Projekten mit Double-Quotes.
---
by Maasda/Julian
http://www.maasda.de
Diese Nachricht wurde geändert von: Maasda |
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Es ist beides erlaubt. Sowohl Single wie auch Doublequotes.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Maasda
Pixelschubser Threadstarter
Beiträge: 18 |
Aber hab ich durch das Escaping-sparen irgendwelche nennenswerten Performance Steigerungen? Kann ich mir nicht vorstellen.
Sonst: Hab mich dran gewöhnt, das Escaping immer durchzuziehen, und sollten keine triftigen Gründe dagegen sprechen, behalte ich das bei. Is halt mein Style
---
by Maasda/Julian
http://www.maasda.de
|
 Profil
Website
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Du köntnest auch eifnach in PHP einfache Anführungszeichen benutzen. Macht dein (leider) eingebetteten HTML-Code leichter zu lesen.
|
 Profil
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Jep es geht nur um die Lesbarkeit des Quellcodes - Escaping verringert diese stark.
Allerdings finde ich eingebettetes HTML durchaus sinnvoll - nicht jede kleine Anwendung benötigt ein Templatesystem. Wenn man viel mit CSS-Klassen arbeitet, kann man später auch so noch jede Menge formatieren. Ein Templatesystem ist bei kleinen Anwendungen unnötiger Overhead.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Maasda
Pixelschubser Threadstarter
Beiträge: 18 |
Wie würde denn so ein Templatesystem aussehen?
Erst durch PHP sämtlichen Content in Variablen schreiben und dann in ein Template einfügen? Das würde doch mehr RAM kosten, oder?
---
by Maasda/Julian
http://www.maasda.de
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Richtig - Templatesysteme sind zusätzlicher Overhead - sowohl RAM wie auch Rechenleistung. Bei größeren Anwendungen senken sie jedoch den Entwicklungs- und Pflegeaufwand enorm. Wenn man etwas größere Anwendungen wiederverwenden/weitergeben will, kommt man um ein Templatesystem nicht herum. Um die Geschwindigkeit zu steigern werden oft Ausgabe-Caches verwendet, welche das erzeugte HTML speichern.
Man könnte z.B. Smarty verwenden. Hier werden die Templatedateien zu PHP compiliert, was die Ausführung beschleunigt. Eine Alternative ist eine der XSLT-Extensions für PHP. Hier hat man den Vorteil einer standardisierten Syntax und sehr klarer Trennung des Layouts von der Anwendunglogik.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Maasda
Pixelschubser Threadstarter
Beiträge: 18 |
Ich denke, es ist zwar gut, wenn der Code auch für andere les- und nachvollziehbar ist und bleibt, doch solange ich an diesem Projekt code, werde ich es ersteinmal so lassen bzw. weiter so machen, ohne Template-System also, denn hier kommt es vorallem auf Performance an.
Wenn das Projekt fertig ist (bzw. die erste Version), und stabil läuft, kann ich mir Gedanken darüber machen, wie ich den Quellcode aufräumen kann, sodass ich dann schneller und leichter z.B. neue Addins schreiben kann. Doch das hat im Moment bei mir eine niedrigere Priorität als das Zustandebringen des Projekts.
Auf jeden Fall nochmals vielen Dank für eure Hilfe, hier stösst man mal wirklich auf Leute, die sich auch im Hintergrund auskennen (nennt man auch Experten ^^).
Julian
---
by Maasda/Julian
http://www.maasda.de
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Ein Templatesystem nachträglich in ein bestehendes System zu integrieren ist allerdings ein ziemlich hoher Aufwand.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Maasda
Pixelschubser Threadstarter
Beiträge: 18 |
Das wäre es dann jetzt allerdings auch schon.
Ich würde es dann warscheinlich nocheinmal von Grund auf programmieren, um es dann auch an die neuesten Standards anzugleichen usw.
Im Moment ist mein PHP einfach so gestaltet, dass es funktioniert, aber zum Beispiel kein OOP mit drinnen oder so. Das müsste dann sowieso in einem neuen Anlauf passieren.
---
by Maasda/Julian
http://www.maasda.de
|
 Profil
Website
Editieren
Zitieren
|