Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] własne bbcode
Forum PHP.pl > Forum > PHP
jawka7
tworze wlasne bbcoce i nie wiem jak zrobi odnosnik do uzydkownikow tak zeby naprzyklad byl wyswietlany ich profil i zeby bbcode zawieralo zmienna questionmark.gif
b_chmura
a ja nie wiem co Ty wogóle piszesz
jawka7
no bo mam np cos takirgo

Kod
$text = str_replace('[b]', '<b>', $text);
$text = str_replace('[/b]', '</b>', $text);


wyszukuje w texxie odpowiedni ciag i zastepuje go znacznikiem html

i chce cos takiego stworzyc dla konkretne go profilu np ze jak wcisne na login jakiegos uzytkownika to wyskocza mi jego dane
GrayHat
  1. <?php
  2. $str = preg_replace("#[login](.*?)[/login]#si", "<a href=\"http://strona.pl/profil.php?nick=1\">1</a>", $str);
  3. ?>


O to ci chodzi?
jawka7
no mniej wiecej tak ale mi chodzi zeby wsadzic tam jeszcze jakos zmienna z nickem ze jak wpisze jakis nick to sproboje ko znajsc w bazie danych i jesli istnieje stworzy mi odnosnik akurat do tego profilu gdzie w zmiennej get bedzie podana nazwa uzytkownika

GrayHat nie wiem za bardzo o co chodzi w tym twoim kodzie wiec nie wiem czy mi to pasuje ale po odnosniku widze ze tam jest stala zmienna a ja chce zeby ona byla wyciagana do konkretnego uzytkownika
franki01
Jak chcesz kazdy wyraz przeszukiwac, zeby zobaczyc, czy jest taki uzytkownik to naprawde malo praktyczne.. Lepiej zrobiac jak pisal GrayHat.
.radex
nie rozumiem co ma bbcode do wyszukiwania danego użytkownika
franki01
Jak w tekscie bedzie nazwa uzytkownika, zeby sie zrobil z tej nazwy link do jego profilu. Chyba o to chodzi..
.radex
ahhha, chodzi np. o coś takiego: [linkprofil=jakisseuser] ?
franki01
Chyba nie... Chodzi o to ze np w tekscie "Co powiesz franki01 ciekawego?", "franki01" ma zamienic na link do uzytkownika... Ale mysle ze dreczenie tego tematu nie ma sensu bo autor sie nie udziela i chyba kazdy dla siebie to pisze.
jawka7
sorki ale bylem w szkole przez ten czas i zauwaz ze wszystkie posty byly pisane dzisiaj i nie mialem sie jak udzielac nic na to nie poradze. wracajac do tematu własnie chodzi mi o cos takiego jak napisal radex_p. dokladnie o cos takiego
franki01
No dobra ;]

  1. <?
  2. $text = preg_replace("([profil=\"([^\"]*?)\"])si", "<a href=\"profile.php?username=1\">1</a>", $text);
  3. ?>


Powinno dzialac...
b_chmura
hyhy a dopiero było
Cytat
sorki ze sie nie udzielam ale mialem net odlaczony na calej wiosce i nie moglem. własnie chodzi mi o cos takiego jak napisal radex_p. wlasnie dokladnie o cos takiego


a co do sprawy to wyciagasz loginy użytkowników z bazy i sprawdzasz czy występują w tekście.
Jeśli tak używasz funkcji preg_replace i odpowiedniego wyrażenia regularnego.


EDIT
albo inaczej
robisz tablice z loginami użytkowników wsadzasz w pętle i częstujesz str_replace" title="Zobacz w manualu PHP" target="_manual
jawka7
przerobilem to tak

$text = preg_replace("(\[login=\"([^\"]*?)\"\])si", "<a href=\"dane_uzytkownika.php?login=\\1\">\\1</a>", $text);

i jak wpisze np
[login="jawka7"]

to mi wyskakuje takie cos

login=jawka7">jawka7

no bo neta mialem wczoraj tez odlaczonego na jakis czas az do rana ale potem sie skaplem ze wszystkie posty byly ppisane dzisiaj jak bylem w szkole
franki01
sprobuj:

  1. <?php
  2. $text = preg_replace("([login=\"(.*?)\"])si", "<a href=\"dane_uzytkownika.php?login=1\">1</a>", $text);
  3. ?>
jawka7
nie wiem czemu ale wyswietla sie nadal to samo ;/
franki01
A mozesz pokazac caly skrypt, ktory zamienia wszystkie znaczniki? Raczej jakis inny ingeruje w ten znacznik...
WebKing
Prosze oto skrypt

  1. <?php
  2. $text = preg_replace("#[login=(.*?)]#si", "<a href=\"dane_uzytkownika.php?login=1\">1</a>", $text);
  3. ?>


Testowany winksmiley.jpg
franki01
Ale wszystkie, tzn ]url[ ]img[ itp (znaki zamienilem, zeby nie zamienilo ;])
jawka7
oto reszta skryptu:
Kod
$text = str_replace('[hr]', '<hr>', $text); $text = str_replace('[b]', '<b>', $text); $text = str_replace('[/b]', '</b>', $text);$text = str_replace('[i]', '<i>', $text);$text = str_replace('[/i]', '</i>', $text);$text = str_replace('[u]', '<u>', $text);$text = str_replace('[/u]', '</u>', $text);$text = str_replace('[br]', '<br>', $text);$text = str_replace('[/p]', '</p>', $text);$text = str_replace('[space]', '<p>&nbsp;</p>', $text);$text = str_replace('[center]', "<p align='center'>", $text);$text = str_replace('[left]', "<p align='left'>", $text);$text = str_replace('[right]', "<p align='right'>", $text);$text = str_replace("[/size]", "</font>", $text);$text = str_replace("[p color=black]", "<p style='color: black;'>", $text);$text = str_replace("[p color=olive]", "<p style='color: olive;'>", $text);$text = str_replace("[p color=teal]", "<p style='color: teal;'>", $text);$text = str_replace("[p color=red]", "<p style='color: red;'>", $text);$text = str_replace("[p color=blue]", "<p style='color: blue;'>", $text);$text = str_replace("[p color=maroon]", "<p style='color: maroon;'>", $text);$text = str_replace("[p color=navy]", "<p style='color: navy;'>", $text);$text = str_replace("[p color=gray]", "<p style='color: gray;'>", $text);$text = str_replace("[p color=lime]", "<p style='color: lime;'>", $text);$text = str_replace("[p color=fuchsia]", "<p style='color: fuchsia;'>", $text);$text = str_replace("[p color=white]", "<p style='color: white;'>", $text);$text = str_replace("[p color=green]", "<p style='color: green;'>", $text);$text = str_replace("[p color=purple]", "<p style='color: purple;'>", $text);$text = str_replace("[p color=silver]", "<p style='color: silver;'>", $text);$text = str_replace("[p color=yellow]", "<p style='color: yellow;'>", $text);$text = str_replace("[p color=aqua]", "<p style='color: aqua;'>", $text);$text = str_replace("[size=1]", "<font size='1'>", $text);$text = str_replace("[size=2]", "<font size='2'>", $text);$text = str_replace("[size=3]", "<font size='3'>", $text);$text = str_replace("[size=4]", "<font size='4'>", $text);$text = str_replace("[size=5]", "<font size='5'>", $text);$text = str_replace("[size=6]", "<font size='6'>", $text);$text = str_replace("[size=7]", "<font size='7'>", $text);$text = str_replace("[size=8]", "<font size='8'>", $text);$text = str_replace("[size=9]", "<font size='9'>", $text);$text = str_replace("[size=10]", "<font size='10'>", $text);$text = str_replace("[size=11]", "<font size='11'>", $text);$text = str_replace("[size=12]", "<font size='12'>", $text);$text = str_replace("[size=13]", "<font size='13'>", $text);$text = str_replace("[size=14]", "<font size='14'>", $text);$text = str_replace("[size=15]", "<font size='15'>", $text);$text = str_replace("[/a]", "</a>", $text);$text = ereg_replace(":\(", "<img src=\"smile/triste.gif\">",$text);$text = ereg_replace(":)", "<img src=\"smile/smile.gif\">",$text);$text = ereg_replace(":D", "<img src=\"smile/sorrisone.gif\">",$text);$text = ereg_replace(";o", "<img src=\"smile/redface.gif\">",$text);$text = ereg_replace(":P", "<img src=\"smile/tongue.gif\">",$text);$text = ereg_replace(";)", "<img src=\"smile/wink.gif\">",$text);$text = ereg_replace(":o)", "<img src=\"smile/clown.gif\">",$text);$text = ereg_replace("8)", "<img src=\"smile/shy.gif\">",$text);$text = ereg_replace(":x", "<img src=\"smile/kisses.gif\">",$text);$text = ereg_replace(";=\(", "<img src=\"smile/evil.gif\">",$text);$text = ereg_replace(":I", "<img src=\"smile/blush.gif\">",$text);$text = ereg_replace("\?", "<img src=\"smile/question.gif\">",$text);$text = ereg_replace("0]", "<img src=\"smile/alien.gif\">",$text);$text = ereg_replace(":O", "<img src=\"smile/shock.gif\">",$text);$text = ereg_replace(":lol", "<img src=\"smile/laugh.gif\">",$text);$text = ereg_replace(":smokin", "<img src=\"smile/smokin.gif\">",$text);$text = ereg_replace(":rollin", "<img src=\"smile/roll.gif\">",$text);$text = ereg_replace(":hat", "<img src=\"smile/pimp.gif\">",$text);return $text;
WebKing jak wprowadzilem ten twoj skrypt i jest to samook dzieki juz sobie poradzilem poczytalem troch w kursie i poprawilem wszystko dzieki
.radex
gorzej będzie, jak ktoś zapomni domknąć bb-znacznika. Ale możesz zrobić coś takiego jak jest w niektórych systemach, tj. używa strreplace, ale najpierw przetentegowuje tekst przez parser, który wychwytuje, czy znacznik został domkniety, jesli jest domykalny (np. <hr> nie jest domykalny)
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-2025 Invision Power Services, Inc.