Zur Navigation

bb-codes

1 tomaschko (Gast)

Hi,

ich habe mal eine Frage bezüglich BB-Codes. Ich wollte in mein Blogsystem BB-Codes einbauen, was auch gut geklappt hat, was Fett, kursiv usw. angeht, nur bei Links wirds problematisch, weil ich nicht weiss wie ich es hinkriege das er 2 Sachen ersetzt:

Bis jetzt ersetzt er [a] durch <a> aber wie baue ich den href="..." befehl ein und auch noch so dass er die Linkadresse schreibt?

10.02.2006 11:18

2 Jörg

Mithilfe von preg_replace() kannst du reguläre Ausdrücke ersetzen; probier es z.B. mal so:

$text = preg_replace("/\[a=(.+)\](.+)\[\/a\]/", "<a href=\"\\1\">\\2</a>", $text);

[a=http://test.joergkrusesweb.de/]Test[/a]

... sollte dann ersetzt werden durch:
<a href="http://test.joergkrusesweb.de/">Test</a>

10.02.2006 12:07 | geändert: 10.02.2006 12:09

3 hans (Gast)

[url=[url=[url=[url=[url=[url=[url=[url=[url=[url=[url=[url=[url=[url=[url=[url=[url=[url=[url=][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]][/url]
[code][url=[b][/b]][/url]
[/code]

22.02.2006 13:52

4 Zipstah (Gast)

Ich hab mal ne Frage:

$text = preg_replace("/\[a=(.+)\](.+)\[\/a\]/", "<a href=\"\\1\">\\2</a>", $text);

Wozu sind dann dort die ganzen Slashes und Backslashes?

01.04.2006 13:54

5 Jörg

Hallo Zipstah,

Slash und Backslash haben in dem Beispiel teils recht unterschiedliche Funktionen

1. Slashes

a) die äußeren Slashes im ersten String begrenzen den Ausdruck

"/\[a=(.+)\](.+)\[\/a\]/"

b) dann gibt es die Slashes, die ein schließendes Tag im BBCOde oder HTML kennzeichen

[\/a\]
</a>

2. Backslashes

a) im zweiten String geben \\1, \\2 etc. die geklammerten Ausdrücke im ersten String wieder (in diesem Fall (.+) und (.+))

b) bestimmte Zeichen müssen im ersten String mit einem Backslash maskiert werden, damit sie nicht als Sonderzeichen für die Ersetzung erkannt werden, deswegen in dem Beipiel \[ statt [ und \] statt ] und \/ statt /. Ansonsten würde das / z.B. ja als Begrenzungszeichen interpretiert werden (siehe 1.a)

01.04.2006 14:12 | geändert: 01.04.2006 14:14

6 Marcel (Gast)

Vor dem selben Problem stehe ich jetzt auch.
Deine Erklärung hat mir zwar soweit geholfen, Jörg, allerdings weiß ich nicht wie ich 1 und 2 entsprechend einfügen kann.

***

31.07.2006 14:11

7 Jörg

Was meinst du mit 1 und 2 - die Variablen \\1 und \\2?

31.07.2006 20:19

8 Marcel (Gast)

Ja, genau.

***

31.07.2006 21:00

9 Jörg

Die beiden Variablen stehen für die variablen Inhalte; in dem Beispiel in Beitrag 2 werden im Muster auf der linken Seite die Klammer-Ausdrücke (.+) stellvertretend eingesetzt für die Link-URL und für den Link-Text. Auf der rechten Seite nimmt \\1 das erste (.+), also die Link-URL, wieder auf, \\2 das zweite (.+), also den Link-Text. Du musst die Variablen also dort einsetzen, wo sich Link-URL bzw. Link-Text befinden. Entsprechend kannst du auch mit anderen Ersetzungen verfahren

31.07.2006 21:32 | geändert: 31.07.2006 21:34

Beitrag schreiben (als Gast)

Beim Verfassen des Beitrages bitte die Forenregeln beachten.





[BBCode-Hilfe]