# [HELP] gbook - bb code + ersetzen von zeichen durch grafiken



## phpMars (7. März 2004)

also ich bin dabei mei erstes gescheites gbook zu coden, dennoch hab ich paar fragen wie ich BB - Code reinbekomme  und ich txt smiley zu grafiken ändern kann ...also wenn ich meinen eintrag schreibe und : ) oder :zunge: verwendet wird das es dann beim auslesen durch smile.gif oder zunge.gif getauscht wird ... 

thx 4 help


----------



## ludz (7. März 2004)

Suchen wäre ganz schön gewesen...


----------



## morgenstern (7. März 2004)

Bei Grafiken kannst du mit str_replace arbeiten.

Ein Beispiel:


```
$text = str_replace(":P","<img src=tongue.gif border=0>&nbsp;",$text);
```

Bei einer fetten Schrift könnte es so aussehen:


```
$text = preg_replace("/\["b"](.*)\[\/"b"\]/siU","<b>\\1</b>",$text);
```

(ohne den " " Zeichen)

Zu beachten ist die Variable $text, die du anpassen musst.

Hoffe ich konnte helfen.


----------



## JohannesR (7. März 2004)

mixed *preg_replace* ( mixed pattern, mixed replacement, mixed subject [, int limit])
mixed *str_replace* ( mixed search, mixed replace, mixed subject)

Die beiden sollten dir helfen.


----------



## phpMars (7. März 2004)

das mit den smileys hat nun geklappt...
nur noch das mit dem bb code  nit so ganz... muss ich aber nochmo drüber schuan

jetzt ís mir aber noch was eingefallen.. wie kann ich html sperren ?


----------



## JohannesR (7. März 2004)

string *htmlspecialchars* ( string string [, int quote_style [, string charset]])
string *strip_tags* ( string str [, string allowable_tags])


```
<?php
$tags = array("b", "i", "u", "s");
$tags = implode("|", $tags);
$text = preg_replace("#\[(" . $tags . ")\](.*)\[\/\\1\]#siU","<\\1>\\2</\\1>",$text);
?>
```

_Edit: Getuned _


----------



## phpMars (7. März 2004)

des  läuft  wunderbar  danke!

weitere frage:
wie schaff ich es automatisch nen zeilenumbruch hinzubekommen ?


----------



## JohannesR (7. März 2004)

string *nl2br* ( string string)
Du könntest eigentlich auch mal selber auf php.net suchen...


----------



## morgenstern (7. März 2004)

```
$text = nl2br($text);
```

Ich hoffe das stimmt.


----------



## phpMars (7. März 2004)

kanns sein das der abstand da irgendwie groß is oder dann 2 ma <br> eingesetzt wird ?


----------



## JohannesR (7. März 2004)

Nein, es sei denn du gibst den Inhalt in einem <pre> aus, da hinter dem <br /> ein \n\r steht, welches von pre-Tags als weiterer Zeilenumbruch interpretiert wird (Newline, Return Carriage)


----------



## phpMars (7. März 2004)

tjo.. irgendwie hab ich diese newline ... und unter php.net steht ah was wie man die wegbekommt, nur klappen tut das bei mir nit


----------



## JohannesR (7. März 2004)

Zeig mal den betreffenden Code her.


----------



## phpMars (7. März 2004)

probiert hab ich 

$var = nl2br($var);
$var = str_replace("<br />", "<br>", "$var");
$var = strip_tags($var,'<a><p><img><b>');

########################################
das funktioniert gar nit:

<? function clear_newline($text) {

  $text = ereg_replace("\n", "<br>", $text);
  $text = ereg_replace("\r", "", $text);

  return $text;
}
?>


----------



## morgenstern (7. März 2004)

wenn du sonst eine variable $text verwendest kanns net klappen.


```
$var = nl2br($var);
$var = str_replace("<br />", "<br>", "$var");
$var = strip_tags($var,'<a><p><img><b>');
```

musst $text statt $var schreiben


----------



## JohannesR (7. März 2004)

Das ist auch saudumm, was du gemacht hast! 
Die Funktion strip_tags entfernt die Zeilenumbrüche ja wieder:


```
<?php
$var = strip_tags($var,'<a><p><img><b>');
$var = nl2br($var);
?>
```

Die <br /> können so bleiben, das sind XHTML-Konforme Zeilenumbrüche.


----------



## morgenstern (7. März 2004)

ups hätte ich auch ganz übersehen


----------



## phpMars (7. März 2004)

nuja....
also ich checks jetzt nit, wie ich die newline rausbekomme....


----------



## JohannesR (7. März 2004)

```
<?php
$var = nl2br($var); 
$var = str_replace("<br />", "<br>", "$var"); 
$var = strip_tags($var,'<a><p><img><b>');
$var = preg_replace("#\\\\(n|r)#", "", $var); // Hoffe das klappt so!
?>
```


----------



## phpMars (8. März 2004)

Warning: Compilation failed: unmatched parentheses at offset 5 on line 56

das wäre:

```
$var = preg_replace("#\\(n|r)#", "", $var);
```


----------



## JohannesR (9. März 2004)

```
$var = preg_replace("#\\[nr]#si", "", $var);
```

Keine Ahnung, so evt...


----------

