Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Podobne do BBcode B | i | u | Quote | List | URL .....
Forum PHP.pl > Forum > Gotowe rozwiązania
boya
Mam pytanko a raczej problem
Jak zrobic takie cos taka weryfikacje bo to chyba to ze jak jakis uzytkownik pisze posta na mojej www i pisze link lub jakis text to mogl go pogrubic wstawiajac [ b]...[/b] lub ... i jak to dalej jest weryfikowane sadze ze gotowy zapis trafia do bazy a pozniej jest czytany i przechodzi przez CSS
bamboos
Witam!!
Może tak?
[php:1:2640785e78]<?php
$text = 'jakiś tekst <b>pogrubiony</b> i <url>www.adres.pl</url> koniec.';
$text = preg_replace(array(
'/(.+)/',
'/(http://|)(.+)/'
), array(
'<b>1</b>',
'<a href="http://2">2</a>'
), $text);
echo $text;
?>[/php:1:2640785e78]
Chyba że nie o to chodzi bo piszesz strasznie nie zrozumiale nieuzywajac znaków interpunkcyjnych i cieżko się czyta taki tekst.
Zamień najpierw w $text '<' i '>' na '[' i ']', bo forum znaczki wycina ;P
cichy
[php:1:dbd0a38cee]<?php
$text = "test [ b ]test[ / b ] test"; //bez spacji bo forum je zjadło :|
$text = preg_replace("#(.*?)#si", "<b>1</b>", $text);
echo $text;
?>[/php:1:dbd0a38cee]
Powinno wyświetlić:
test test test
Analogicznie do innych.
Pozdro
boya
Dzieki chlopaki za pomoc. A z interpunkcji sie poprawie biggrin.gif

Jeszcze jedno idzie to jakos zespolić z CSS
np.
User wpisuje text: Wejdz tutaj

Kod
<a class="url" href="www.wp.pl">tutaj</a>


zeby wyszlo takie cos questionmark.gif
boya
Zrobilem cos takiego:

[php:1:86f39490cb]<?php
$text = preg_replace(array(
'/(.+)/',
'/(http://|)(.+)/'
), array(
'<b>1</b>',
'<a class="" href="http://2" target="blank">2</a>'
), $text);
echo $text;
?>[/php:1:86f39490cb]

i teraz chce aby tam gdzie mam class="" wstawil mi slowo url
dob
Ja proponuje tak :

[php:1:83ecfb45b4]<?php
$warunek[1] = "#[/url]#i";
$wynik[1] = "</a>";
$warunek[2] = "#[url]([a-z0-9-.,?!%*_#:~&$@/=+()]+)#si";
$wynik[2] = "<a class='url' target='_blank' href='http://1'>1";
$warunek[3] = "#(.*?)#si";
$wynik[3] = "<b>1</b>"

$tresc=preg_replace($warunek, $wynik, $tresc);
?>[/php:1:83ecfb45b4]
boya
Cytat
$tresc=preg_replace($warunek, $wynik, $tresc);


wywala blad przy tym...
dob
Oj sorry zapomnialem dodac :

[php:1:62cd5df0f8]<?php
$warunek = Array();
$wynik = Array();
$warunek[1] = "#[/url]#i";
$wynik[1] = "</a>";
$warunek[2] = "#[url]([a-z0-9-.,?!%*_#:~&$@/=+()]+)#si";
$wynik[2] = "<a class='url' target='_blank' href='http://1'>1";
$warunek[3] = "#(.*?)#si";
$wynik[3] = "<b>1</b>"

$tresc=preg_replace($warunek, $wynik, $tresc);
?>[/php:1:62cd5df0f8]

Jak bedzie jakis bład jeszcze to wklej go tu...
aha te wszystkie zamienniki do tego mozesz sobie brac z forum phpbb - plik bbcode.php (katalog includes)
bamboos
Witam znowu!
[php:1:8a6615ae36]<?php
$text = preg_replace(array(
'/(.+)/',
'/[url(=(.+)|)](http://|)([a-z0-9-.,?!%*_#:~&$@/=+()]+)[/url]/i',
'/[mail]([a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+.[a-zA-Z]{2,4})[/mail]/'
), array(
'<b>1</b>',
'<a class="2" href="http://4" target="_blank">4</a>',
'<a class="mail" href="mailto:1">1</a>'
), $text);
echo $text;
?>[/php:1:8a6615ae36]
Kod
[url=klasa]http://www.wp.pl[/url]
zamieni na:
[xml:1:8a6615ae36]<a class="klasa" href="http://www.wp.pl" target="_blank">www.wp.pl</a>[/xml:1:8a6615ae36]
a
Kod
[url]www.wp.pl[/url]
na:
[xml:1:8a6615ae36]<a class="" href="http://www.wp.pl" target="_blank">www.wp.pl</a>[/xml:1:8a6615ae36]

-------------EDIT-----------

Troszkę zmieniłem, zobacz teraz.
boya
ok zorbione tylko jeszcze jeden problem
a mianowicie jak napisze

Kod
[url]http://xxx.xx.xx/[/url] [url]http://xxx2.xx.xx/[/url]


on mi to traktuje jako 1 link i jeszcze jedno pytanie jak chce dodac nowa pozycje [ ] np [mail] to jak bedzie to wygladac + [mail] i znow zeby mozna bylo pisac

Kod
[mail]xxxx@xx.xx[/mail] [mail]xxx@xxx.xx[/mail]


[php:1:bbb458c023]<?php
$text = preg_replace(array(
'/(.+)/',
'/(http://|)(.+)/',
'/[mail](.+)[/mail]/'
), array(
'<b>1</b>',
'<a class="t1" href="http://2" target="blank">2</a>',
'<a class="t1" href="mailto=3" target="blank">3</a>'
), $text);
?>[/php:1:bbb458c023]

tak ma to wygladac questionmark.gif
hwao
[php:1:5aef850481]<?php
function bbcode( $text) {

$text = nl2br( $text);

$text = str_replace("", "<span style="font-weight: bold">", $text);
$text = str_replace("", "</span>", $text);
$text = str_replace("", "<span style="text-decoration: underline">", $text);
$text = str_replace("", "</span>", $text);
$text = str_replace("", "<span style="font-style: italic">", $text);
$text = str_replace("", "</span>", $text);
$text = str_replace("", "<ul>", $text);
$text = str_replace("", "<li>", $text);
$text = str_replace("", "</ul>", $text);
$text = str_replace("[list]", "</ol>", $text);
$text = preg_replace("/[list]/si", "<ol type="1">", $text);
$text = preg_replace("/{6}|[a-z]+)]/si", "<span
style="color: 1">", $text);
$text = str_replace("
", "</span>", $text);
$text = preg_replace("/?[0-9])]/si", "<span style="font-size:
1px; line-height: normal">", $text);
$text = str_replace("
", "</span>", $text);

$patterns = array();
$replacements = array();
$patterns[] = "#[img](.*?)[/img]#si";
$replacements[] = "<img src="1" border="0" />";
$patterns[] =
"#[email=([a-z0-9&-_.]+?@[w-]+.([w-.]+.)?[w]+)]([a-z0-9&-_.]+?@[w-]+.([w-.]+.)?[w]+)[/email]#si";
$replacements[] = "<a href="mailto:1">1</a>";
$patterns[] = "#([^ "nrt<]*?)#is";
$replacements[] = "<a href="1" target="_blank" class="mb_link">1</a>";
$patterns[] = "#*?)](.*?)#is";
$replacements[] = "<a href="1" target="_blank" class="mb_link">2</a>";
$patterns[] =
"#[email=([a-z0-9&-_.]+?@[w-]+.([w-.]+.)?[w]+)](.*?)[/email]#si";
$replacements[] = "<a href="mailto:1">3</a>";

$text = preg_replace($patterns, $replacements, $text);
return $text;
}
?>[/php:1:5aef850481]
Ktoś już dał ten kod ale nie pamietam kto
boya
Ok zrobilem


[php:1:b7603a9a25]<?php
$text = preg_replace(array(
'#[mail]([a-z0-9&-_.]+?@[w-]+.([w-.]+.)?[w]+)[/mail]#si',
'#([^ "nrt<]*?)#is',
'#(.+)#si',
'#[br](.+)[/br]#si'
), array(
'<a title="Wejdz" class="t1" href="mailto:1">1</a>',
'<a title="Wejdz" class="t1" href="1" target="_blank">1</a>',
'<b>1</b>',
'<BR>1'
), $text);
?>[/php:1:b7603a9a25]

tylko mam jeszcze jedno ale...mianowicie

[php:1:b7603a9a25]<?php
#[br](.+)[/br]#si'
?>[/php:1:b7603a9a25]

jak to zapisac zeby przechodzilo do nowej lini po wpisaniu

Kod
jakistam text[br]


:?:
dob
zazwyczaj znak nowej linni zamienia sie tak :
[php:1:7b9bbbd162]<?php
$tresc=str_replace("n", "<br>", $tresc);
?>[/php:1:7b9bbbd162]
i w ten sposób wrzuca do bazy

dzieki temu przy wtswietlaniu kazdy enter z pola textowego bedzie nową linią...jeżeli wogole o to chodzi
boya
Fajno dziekuje wszystkim za pomoc i pozdrawiam !!!
kalinowski
a nie lepiej jest zeby wstawial znaczniki html np <b></b>
i zeby uwzglednial je questionmark.gif
hwao
A jak już bedzie działac <b> to ktos moze sobie cala strone wklejic wiec poco dawac mozliowsc wsadzania kodu html? Pozatym moze nie znac sie i lepiej uzyc [b ] bo to bardziej znane z róznych forumów itp :]
boya
Wlasnie ze nie, bo jak bedzie <b> to caly HTML bedzie i mozna bedzie wstawiac jakis durny kod ktory mi www rozwali a tak to wole ciac tagi i wyluskac sovie z kodu [b] !!

pozdrawiam
splatch
Ja napisałem taki mały skrypt króry działa podobnie - jest też możliwość definiowania własnych znaczników i wtyczek. Jeśli ktoś jest zainteresowany to z chęcią podeślę. Użycie sprowadza się do użycia 1 funkcji.
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.