PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vb code


koerschgen2001
21.07.2004, 16:36:28
wie wird vb code realisiert. gibt es da standarts für wie man das macht?

ich hatte daran gedacht sowas mit str_replace() zu realisieren.
aslo [B] durch <b> zu ersetzten.
Hab davon keine ahnung. wollte auch erstmal nur b,I und U für mein gästebuch ausprobieren.
Aber so wie ich das sehen funktionieren das nur wenn der tag auch geschlossen wird sonst nicht. welche funktion ist dafür zuständig.

bazubi
21.07.2004, 16:44:27
Das macht man am besten mit preg_replace()


$text = preg_replace('#(.*)#Uis', '<b>' . $1 . '</b>', $text);

feuervogel
21.07.2004, 16:54:20
am besten macht man das nicht per regex, weil die schweine lahm sind.

du ersetzt einfach per str_replace [ b ] mit <b> und [ b ] mit </b>. (natürlich ohne die leerzeichen)

c4
21.07.2004, 16:57:04
Für das bisschen Text sind reguläre Ausdrücke ausreichend langsam. Außerdem haben sie die Vorteile, dass so etwas klappt:
[b] Test [b] Test [b] Test [b] Test
Bei str_replace hättest Du massig offene Tags und das W3C schimpft...

feuervogel
21.07.2004, 17:32:59
wenn der benutzer zu dumm ist das anzuwenden? wenn ich ein programm verkaufe, das dazu da ist, dateien zu löschen, und ein benutzer ausversehen alles vom pc löscht, ist mir das auch wurscht.

zweitens: nehmen wir mal an, wir haben ein cms. dieses cms zeigt nun, ähnlich wie bei golem.de oder so einen überblick über artikel an. da sind dann vielleicht 15 artikel, jeder enthält, sagen wir 1500 worte pro artikel...jetzt wird halt immer nur ein kleiner teil ausgegeben aber trotzdem vorher der ganze text geparsed...wie lang das braucht, will ich gar nicht wissen.

xabbuh
22.07.2004, 04:05:35
Original geschrieben von feuervogel
wenn der benutzer zu dumm ist das anzuwenden?
Letztendlich dürfte es dem Benutzer aber vielleicht egal sein, ob dein HTML valide ist oder nicht. Dir aber vielleicht nicht unbedingt... oder?

feuervogel
22.07.2004, 22:47:07
doch, in dem fall ist es mir egal, ist ja nicht "mein" html.

zweitens benutze ich eh nicht mehr diese art von parsing sondern hab ne m.e. nach elegantere methode entwickelt.

c4
23.07.2004, 07:54:40
zweitens benutze ich eh nicht mehr diese art von parsing sondern hab ne m.e. nach elegantere methode entwickelt. Lass sie uns wissen! Danke.

feuervogel
23.07.2004, 10:48:19
ja, sorry, war dann gestern etwas müd.

also, folgendes:

///plaintextstart///
hallo
b welt
col #FF0000 !!!

i wie gehts?
> das ist ein zitat
///plaintextend///

wird zu:

///htmlstart///
hallo welt !!!
wie gehts? das ist ein zitat
///htmlend///

wer mal einen blick ins spiegel.de forum wirft, findet einen ähnlichen parser, allerdings kann man dort nicht einfärben. urls werden auch bei mir automatisch zu hyperlinks. statt #FF0000 kann man auch einfach nur red schreiben.

c4
23.07.2004, 10:56:32
Erinnert irgendwie an LaTeX.

Interessante Methode, aber ich finde sie nicht praktikabel.

Gweilo
23.07.2004, 11:16:31
ja, denn zum beispiel, wenn jemand schreibt:
i don't want this text written in italics
wird er ein blaues wunder erleben :)

Man könnte ja die texte html encodet in der datenbank speichern, dann muss man den text nicht mehr decoden beim betrachten, nur noch beim editieren halt.

feuervogel
23.07.2004, 11:18:37
naja, nachteil ist halt, dass der vb-code stark an html errinnert und dadurch für die meisten schneller erlernbar ist.
vorteile liegen auch deutlich auf der hand: es ist sehr schnell zu tippen damit, wenn man vb-code schnell einfügen will muss man einserseits mit der hand zur maus, andererseits muss js aktiviert sein. 2 dinge die ich nicht mag.
dass es praktikabel sein kann zeigt der einsatz im spiegel.de-forum.

c4
23.07.2004, 11:20:57
wenn man vb-code schnell einfügen will muss man einserseits mit der hand zur maus, andererseits muss js aktiviert sein Weder das eine, noch das andere stimmt.

Aber gut, soll doch jeder machen, wie will er.

feuervogel
23.07.2004, 12:21:29
du kannst nicht bestreiten, dass

b hallo

schneller zu tippen ist, als

[ b ]hallo[ / b ]

wenn es also über die buttons gehen soll, muss js an sein. man kann die buttons natürlich auch über die tab-taste erreichen, bzw. über access-keys.

xabbuh
23.07.2004, 13:12:13
Und wenn ich bei dir einen ganzen Satz fett erscheinen lassen will, muss ich dann vor jedes Wort ein b setzen?

feuervogel
23.07.2004, 14:47:42
nein! das wäre ja zu umständlich!

der parser wendet den formatierungsbefehl auf alles an, was nach dem leerzeichen nach dem formatierungsbefehl bist zum nächsten zeilenumbruch kommt. einfache zeilenumbrüche werden zu leerzeichen, je 2 zeilenumbrüche hintereinander werden zu einem zeilenumbruch:

also

hallo
b welt hier ist der
parser.

bla
bla
bla

wird zu

hallo welt hier ist der parser
bla bla bla

xabbuh
23.07.2004, 15:35:43
Da ergibt sich für mich dann aber eine Frage:

Oben weiter hast du geschrieben, dass dir reguläre Ausdrücke in solchen Fällen nicht unbedingt lieb sind. Beim vb Code könnte ich natürlich mit str_replace arbeiten, auch wenn das "unschönes" HTML ergibt. Wie willst du das jetzt dann bitte bei deiner Variante machen?

feuervogel
23.07.2004, 16:16:27
natürlich muss ich da reguläre ausdrücke anwenden, weil es einfach nicht anders zu lösen ist. es ging oben jedoch darum, dass die beste methode für vb-code-parsing regex seien. dem habe ich widersprochen. regex ans sich sind ja nicht schlecht, nur m.e. mit adäquaten alternativen unbedingt zu vermeiden.

xabbuh
23.07.2004, 16:38:59
Original geschrieben von feuervogel
nur m.e. mit adäquaten alternativen unbedingt zu vermeiden.

In der Hinsicht, was adäquate Alternativen sind, gehen unsere Meinungen allerdings auseinander.

feuervogel
23.07.2004, 17:29:46
ja, dir ist valides html überall wichtig, mir bei benutzereingaben eben nicht. aber trotzdem lässt sich nicht von "bester" lösung sprechen. jede lösung hat vor- und nachteile.

abgesehen davon entsteht bei der art wie ich in zukunft parsen (lassen) werde, auch nicht die möglichkeit invalides html zu bauen.

xabbuh
23.07.2004, 17:40:48
Original geschrieben von feuervogel
ja, dir ist valides html überall wichtig, mir bei benutzereingaben eben nicht.
Naja, lassen wir das. Da werden wir wohl nie auf einen gemeinsamen Nenner kommen ;-)

Original geschrieben von feuervogel
abgesehen davon entsteht bei der art wie ich in zukunft parsen (lassen) werde, auch nicht die möglichkeit invalides html zu bauen.
Da hast du Recht. Finde deine Art des parsens auch ganz interessant, aber aus rein subjektiver Sichtweise, sagt mir vb Code mehr zu. Vermutlich wegen der direkten Anlehnung an html.

feuervogel
23.07.2004, 18:25:03
Original geschrieben von xabbuh
Naja, lassen wir das. Da werden wir wohl nie auf einen gemeinsamen Nenner kommen ;-)


wär ja auch fad wenn alle gleich wären...;-)