ďťż

Kilka pytań o PHP

       

Podstrony


telcocafe

Właśnie robię swoją stronkę i aktualnie pracuję nad forum. Potrzebuję teraz stworzyć funkcję, która przed zapisaniem posta w bazie danych podmieniłaby jego treść (chodzi tu o uśmieszki,
, itp.)
1. W jaki sposób zrobić żeby np. z [quote="autor"]tutaj cytat
wyciągneło mi nazwę "autor", sformatowało tak jak trzeba i żeby nie działało gdy nie ma otwarcia/zamknięcia znacznika. (próbowałem zrobić to z funkcją explode, ale coś mi nie wyszło). :( , a funkcja str_replace wydaje mi się że nie potrafi tego zrobić.

2. Jak w taki sam sposób zrobić [ url="http://adres.pl"]tutaj to co bedzie widoczne.

3. Jak zrobić takie wstawianie buziek jakie jest na tym forum??(Wiem że to Javascript)

4. Może ktoś wie gdzie znaleźć jakiś porządny, "łopatologiczny" kurs PHP(wyjaśnienia poleceń itp.) i nie mówię o www.pl.php.net.



Postaram się odpowiedzieć na pytanie czwarte. Szczerze Ci powiem, że sam kiedyś czegoś podobnego szukałem. Nie jest to zadaniem łatwym. W internecie istnieje wiele kursów czy poradników, ale żaden mi nie wystarczał. Kupiłem więc książkę PHP i MySQL Tworzenie Stron WWW Vademecum Profesjonalisty (wyd. II). Spełnia ona moje oczekiwania. Jest napisana w sposób ciekawy, a każdy kod jest dokładnie analizowany. Do tego dokładam jeszcze pisanie co jakiś czas własnych skryptów (czy też ulepszanie starszych) za pomocą nowo poznanych metod. Dla mnie okazało się to najlpeszym (jak dotąd) "sposobem na PHP" ;)

Pozdrawiam,
shimonic :)

Co do podmieniania to użyj str_replace();
Np.
$tekst = "[b]To jest pogrubiny tekst[/b]"; str_replace("[b]", "<b>", $tekst); //zamienia [b] na <b> str_replace("[/b]", "</b>", $tekst); //zamienia [/b] na </b>

Co do kursu php zapraszam tutaj :) Kurs jest napisany fajnie i jest dobry dla początkującego.

Wstawianie buziek to nie jest Javascript. Tam też wykorzystuje się str_replace().

Przykład:

$tekst = "Tekst z buźką :)"; str_replace(":)", "<img src=\"usmiech.gif\">", $tekst);
Użytkownik dh_maniak edytował ten post 25 czerwiec 2005, 12:17
no dobrze str_replace ale jeśli chodzi na przykład o napisanie podmienienia <a href=" cos"></a>



A jeśli chodzi o [ url= http://cos]cos[/url] na <a href...</a> to nie mam pomysłu jak to zrobić. Może wyrażenia regularne czy coś podobnego?
Użytkownik dh_maniak edytował ten post 25 czerwiec 2005, 12:19

(..)

Wstawianie buziek to nie jest Javascript. Tam też wykorzystuje się str_replace().

Przykład:

$tekst = "Tekst z buźką :)"; str_replace(":)", "<img src=\"usmiech.gif\">", $tekst);


Co do podmieniania to użyj str_replace();
Np.
$tekst = "[b]To jest pogrubiny tekst[/b]"; str_replace("[b]", "<b>", $tekst); //zamienia [b] na <b> str_replace("[/b]", "</b>", $tekst); //zamienia [/b] na </b>

Co do kursu php zapraszam tutaj :) Kurs jest napisany fajnie i jest dobry dla początkującego.

@ shimonic Miałem nadzieję że sam się tego domyśli ;) A ty jeszcze podałeś mu gotowy kod.

@seak1 Wątpię by o to mu chodziło.

A co do url'i to możesz strefamroku użyć wyrażeń regularnych Perl'a. Wystarczy poszukać na google ;) Wyrażenia regularne Perl'a możesz użyć też do quote.
Użytkownik dh_maniak edytował ten post 25 czerwiec 2005, 12:30
Apropo urli to chyba też by się dało z podmianą - zamieniałoby się przy pomocy str_replace [ url] na http:// a [ /url] na puste miejsce.

@shimonic No i co by to dało?? :/ Przecież to zamieni to tylko na tekst a nie na link.

Przepraszam - zapomniałem o "hrefie" :/ - faktycznie nie mam pojęcia jak to zrobić :/

Widzę że wywołałem niezłą burzę muzgów... Co do tych buziek to podmiana samego znaku tekstowego na buźkę nie stanowiła dla mnie problemu, ale tak jak napisał Seak1:

Może mu chodziło o wrzucanie kodu do textarea? Dokładnie to chodziło mi o to co jest na tym forum, tzn. że jeżeli piszę posta i kliknę na buźkę to obok textarea to w miejscu gdzie aktualnie jest znacznik pisania doda mi się odpowiedni tekst. Sorki bo może się niezbyt jasno wyraziłem pisząc posta. Czy ktoś wie jak to zrobić??

Za pomocą javascriptu wklejasz w pole buźkę (poprzez kliknięcie), która wygląda tak jak u, np:
:rolleyes:
A później za pomocą funkcji podmień o której pisałem wyżej zamieniasz to wyrażenie w odpowiedni obrazek...
Jak to zrobić javascriptem to nie mam pojęcia, bo to nie moja specjalność ;)
--
Apropo urli to co myślicie o tym, zeby link zapisywał się do zmiennej, a później nią operować? (to taka myśl co mi teraz do głowy przyszła :P )
Użytkownik shimonic edytował ten post 25 czerwiec 2005, 13:00
@strefamroku Może to Ci coś powie:
<input type="button" accesskey="p" value=" CODE " onclick="simpletag('CODE')" class="codebuttons" name="CODE" onmouseover="hstat('code')" />
Wystarczy popatrzyć na źrodło strony do dodawania tematu forum kśe.
Użytkownik dh_maniak edytował ten post 25 czerwiec 2005, 14:33

@strefamroku Może to Ci coś powie:
<input type="button" accesskey="p" value=" CODE " onclick="simpletag('CODE')" class="codebuttons" name="CODE" onmouseover="hstat('code')" />
Wystarczy popatrzyć na źrodło strony do dodawania tematu forum kśe.

Polecam GENERATOR BBCODE :D zaznaczasz co chcesz mieć w swoim forum i wszystko piękinie bez pomyłek wygeneruje się w kilka sekund:D

Pozdrawiam!

Ciekawy ten generator, ale jeżeli mimo wszystko chciałbyś samodzielnie zrobić to jest to tak jak mówiłem już - javascript o czym świadczy kod wzięty 'żywcem' z tego forum:<a href="javascript:emoticon(':)')">
Użytkownik shimonic edytował ten post 25 czerwiec 2005, 17:29

Ciekawy ten generator, ale jeżeli mimo wszystko chciałbyś samodzielnie zrobić to jest to tak jak mówiłem już - javascript o czym świadczy kod wzięty 'żywcem' z tego forum:<a href="javascript:emoticon(':)')">

Po 1 nie wiem po co zapychać baze HTML'em lepiej zrobić coś takiego, że z bazy pobierana jest treść posta wraz z bbcodem i skrypt wyświetlający post przerabia to na wyświetlaną wersje :P

Po 2 pobranie strony php na pulpit nic ci nie da :D :lol: otrzymasz wynikową postać a nie kod php:P

Po 3 powiedz co ci jest potrzebne dokładnie czy pomoc dla użytkownika przy pisaniu postu że np. klika na uśmiech a w polu edycji postu wyświetla się np : ) czy może potrzebne ci jest coś takiego, że zamienia już : ) na np. <img src=smiles/usmiech.gif> a postaram się pomóc

Po 4 pozdrawiam :P!

Zamiana [ url= ] [ /url ]:

$tekst = preg_replace('#\[url=(.*?){1}\](.*?)\[/url\] #si', "'<a href=\"\2\">\3</a>'", $tekst);

Troszkę zmodyfikowałem na sucho, więc nie wiem czy jakiś babol się nie wkradł.
Użytkownik MatroX edytował ten post 25 czerwiec 2005, 18:44

Zamiana [ url= ] [ /url ]:

$tekst = preg_replace('#\[url=(.*?){1}\](.*?)\[/url\] #si', "'<a href='.('\2').'>\3</a>'", $tekst);

Troszkę zmodyfikowałem na sucho, więc nie wiem czy jakiś babol się nie wkradł.


Zamiana [ url= ] [ /url ]:

$tekst = preg_replace('#\[url=(.*?){1}\](.*?)\[/url\] #si', "'<a href=\"\2\">\3</a>'", $tekst);

Troszkę zmodyfikowałem na sucho, więc nie wiem czy jakiś babol się nie wkradł.

Przejżyj w manualu funkcję:
preg-replace
oraz
ereg-replace

Podaję oryginalną wersję:

function check_link($link) {    // sprawdzanie linku    return $link; } $text = preg_replace(          "#\[url(=(.*?))?\](.*?)\[/url\]#sie" ,          "'<a href='.(('\\2')?check_link('\\2'):check_link( '\\3')).'>\\3</a>'",          $text          );

Sam pisałem, używam i sprawdza się w 100%. Wcześniej podałem kod zmodyfikowany bo nie chciałem mącić m.in. funkcją wewnątrz drugiego parametru. Funkcja check_link w moim przypadku sprawdza pod pewnymi względami dany adres, czyli czy np. adres pochodzi z tej strony, czy też nie brakuje w nim http itp. I proszę mi nie wmawiać, że nie działa ;)

Powyższe wyrażenie zamienia linki w postaciach:
[ url=adres ] tekst [ /url ]
[ url ] adres_i_zarazem_tekst [ /url ]

[dopisane]
Jak wspomniałem w poprzednim poście: mógł się wkraść babol, bo nie sprawdzałem czy zmoyfikowana wersja działa.
Użytkownik MatroX edytował ten post 25 czerwiec 2005, 20:10
Wielkie dzięki MatroX. Trochę nad tym posiedziałem i usunolem ta funkcje check_link, oraz rozbiłem to na dwa "moduły":
$ciag=preg_replace("#\[url](.*?)\[/url\]#sie" ,"'<a href=\\1>\\1</a>'",$ciag); //przetwarza [url]adres[/url] $ciag=preg_replace("#\[url=(.*?)](.*?)\[/url\ ]#sie","'<a href=\\1>\\2</a>'",$ciag); // przetwarza [url=adres]tekst do wyswietlenia[/url]
I wszystko działa. :D
PS. Czy jeżeli forum zajmuje 15KB (1 plik) to dużo?? Bo nie wiem czy czasem tego nie rozbić na pojedyncze moduły. tzn. jeden do wczytywania tematów, inny do forum itd...

IMHO porównaj z jakimś forum typu phpbb. Tzn jakie ono ma funkcje, a jakie twoje forum, wszystko przeanalizuj i na sam koniec porównaj wielkość. Wedługo mnie 15kb to nawet mało.
Użytkownik seak1 edytował ten post 26 czerwiec 2005, 12:23
moze to mało ale jeśli chodzi o wygodę wprowadzania zmian to polecam rozbicie na więcej plikow

Tu masz wszystko
http://bbcode.strefaphp.net/

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.