Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie newsa - formatowanie tekstu
Forum PHP.pl > Forum > Gotowe rozwiązania
stal-sw
Mam skrypt newsowy i potrzebuje aby w panelu DODAWANIA NEWSA byl przycisk B (bold), I (italic), Hiperlacze, OBRAZEK oraz menu rozwijane powiedzmy z 4 kolorami.
I jak zaznacze tekst i wcisne przycisk to wprowadzi odpowiednie wart do bazy danych, a nastepnie jak wyswietlic wyniki aby tekst byl w nich sformatowany tak jak sie to zobilo w formularzu.
I nie wiem jak to zrobic.

Prosze o pomoc i jakies proste do zrozumienia rozwiazanie tego problemu.
DeyV
najprostrze - zobacz jak działają skypty na tym forum, i wybierz sobie kilka ci potrzebnych.

Nie zapomnij o podaniu pochodzenia tongue.gif
stal-sw
Mam tez zainstalowane PHPBB forum ale ciezko mi sie przeglada jego kod - nie bardzo go rozumie. Probowalem juz na tym przykladzie ale nic nie wyczarowalem.

Czy moglbym kogos prosic o jakis prosty przyklad. Czy potrzeba do tego jeszcze JavaScript questionmark.gif?

Odnosnie tego problemu - jak zrobic ze jak z bazy z pola "tresc" pobieram zawartosc i jesli jest uzyte w tekscie www lub http:// to zamienia mi to podczas wyswietlania na hiperlacze questionmark.gifquestionmark.gif?
DeyV
1. Tak - jest do tego niezbędny JS.
2. jeżeli nie chcesz sprawy komplikować, to - zamiast dodwać bbcode, a zezwalasz w newsach na dodawanie HTML'a, wystarczy zmodyfikować ten skrypt, wstawiający kod (np. po nacisnieciu cool.gif, by wstawiał znacznik HTML.
Wtedy - zamiast starać się roszyfrować kod php tego forum, bawisz sie jedynie ze skrptami dostępnymi na stronie wynikowej.
scanner
Dla przykładu (napisane z pamięci):[php:1:79975af43a]<?php
function __bbCodes($__string){
$__bbCodesArray = array(
'[ b ]' = > '< strong >',
'[ /b ]' = > '< /strong >',
'[ u ]' = > '< u >',
'[ /u ]' = > '< /u >',
'[ i ]' = > '< em >',
'[ /i ]' = > '< /em >',
'[ quote ]' = > '< blockquote >',
'[ /quote ]' = > '< /blockquote >'
);
foreach($__bbCodesArray as $__search = > $__replace){
$__string = str_replace($__search, $__replace, $__string);
}
return $__string;
}
?>[/php:1:79975af43a]Oczywiście trzeba by niepotrzebne spacje w tabeli usunąć. Na forum mechanizxm jest bardziej skomplikowany, z tego co widzę.
DeyV
dokładne tak jak piszesz, tylko lepiej korzystać z fukcji
string strtr ( string str, array replace_pairs)
zamiast [php:1:7eaa52caf3]<?php foreach($__bbCodesArray as $__search = > $__replace){
$__string = str_replace($__search, $__replace, $__string);
} ?>[/php:1:7eaa52caf3]
marcin_jimmi
Witam bardzo serdecznie.
Chciałbym podpiąć sie pod ten temat. Bo z zaproponowanych rozwiązań jestem troszkę zielony i nie wiem tak na prawdę jak to zrobić... Mam podobny problem co autor. Pisze własny CMS na potrzeby własnej strony www. Nie jestem zainteresowany żadnymi CMS pokroju Joomli czy coś podobnego bo wole jednak stworzyć własny od podstaw i zrobić sobie wszystko po swojemu czy to będzie ok czy nie. Interesują mnie opcja o jakie prosił autor posta. Mam już zrobione dodawanie newsów do bazy danych. Mam też zrobione pseudoCMS'owe wyświetlanie ich. Chciałbym jednak zaimplementować takie opcje jakie są widoczne np w oknie dodawania tego komentarza na forum może w podobny sposób poza emotikonami bo są mi całkowicie niepotrzebne.

Zależałoby mi na:
- wyborze czcionki
- kolorowaniu składni
- rozmiar czcionki
- kolor czcionki
- pogubienie
- kursywa
- podkreślenie
- link
- obrazek
- cytat
- mail

Może ktoś z Państwa natknął się na gotowy wzór. Ja mam tylko funkcje z tego co sie orientuję dodawania już chyba do gotowych newsów wysyłanych do bazy (lub nie?).

  1. $s = preg_replace('#\[b\](.*?)\[/b\]#si', '<span style="font-weight: bold">\\1</span>', $s);
  2. $s = preg_replace('#\[i\](.*?)\[/i\]#si', '<span style="font-style: italic">\\1</span>', $s);
  3. $s = preg_replace('#\[u\](.*?)\[/u\]#si', '<span style="text-decoration: underline">\\1</span>', $s);
  4. $s = preg_replace('#\[color=(\#[0-9a-f]{3,6}|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|sil
    ver|teal|white|yellow)\](.*?)\[/color\]#si'
    , '<span style="color: \\1">\\2</span>', $s);
  5. $s = preg_replace('#\[size=([1-2]?[0-9](px|pt)|smaller|larger)\](.*?)\[/size\]#si', '<span style="font-size: \\1; line-height: normal">\\3</span>', $s);
  6. $s = preg_replace('#\[url\]([\w]+?://[^ "\n\r\t<]*?)\[/url\]#si', '<a href="\\1" title="\\1">\\1</a>', $s);
  7. $s = preg_replace('#\[url\]((www|ftp)\.[^ "\n\r\t<]*?)\[/url\]#si', '<a href="http://\\1" title="\\1">\\1</a>', $s);
  8. $s = preg_replace('#\[url=([\w]+?://[^ "\n\r\t<]*?)\](.*?)\[/url\]#si', '<a href="\\1" title="\\2">\\2</a>', $s);
  9. $s = preg_replace('#\[url=((www|ftp)\.[^ "\n\r\t<]*?)\](.*?)\[/url\]#si', '<a href="http://\\1" title="\\3">\\3</a>', $s);
  10.  
  11. $s = preg_replace('#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si', '<a href="mailto:\\1" title="\\1">\\1</a>', $s);
  12.  


Oraz drugi:

  1. $s = preg_replace('#<span style="font-weight: bold">(.*?)</span>#si', '\\1', $s);
  2. $s = preg_replace('#<span style="font-style: italic">(.*?)</span>#si', '\\1', $s);
  3. $s = preg_replace('#<span style="text-decoration: underline">(.*?)</span>#si', '\\1', $s);
  4. $s = preg_replace('#<span style="color: (.*?)">(.*?)</span>#si', '\2', $s);
  5. $s = preg_replace('#<span style="font-size: (.*?); line-height: normal">(.*?)</span>#si', '\2', $s);
  6. $s = preg_replace('#<a href="([\w]+?://[^ "\n\r\t<]*?)" title="(.*?)">(.*?)</a>#si', '\\3', $s);
  7.  
  8. $s = preg_replace('#<a href="mailto:(.*?)" title="(.*?)">(.*?)</a>#si', '[email]\\1[/email]', $s);
  9.  


Czy ktoś pomógłby mi rozwiązać ten problem?
bogdan89
Zobacz na datę postu autora, temat założony prawie 7 lat temu. Nie wiem czy warto było odkopywać taki temat.
Na szczęście od tamtej pory powstało wiele gotowych narzędzi, które możesz wykorzystać... np.: TinyMCE, FCKEditor.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.