![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 21.09.2003 Skąd: Truskaw Ostrzeżenie: (0%) ![]() ![]() |
mam taki kod
Kod [url]http://www.kurs.prv.pl[/url]
[url=http://www.kurs.prv.pl]Kurs[/url] teraz zamieniam go czymś takim [php:1:fc70b94cec]<?php function code($tekst) { $tekst=ereg_replace("(.+)","<a href="1">1</a>",$tekst); $tekst=ereg_replace("(.+)","<a href="1">2</a>",$tekst); return highlight_string($tekst,TRUE); } ?>[/php:1:fc70b94cec] i on zwraca mi [xml:1:fc70b94cec]<a href="http://www.kurs.prv.pl[/url] <a href="http://www.kurs.prv.pl">Kurs">http://www.kurs.prv.pl</a> [url=http://www.kurs.prv.pl]Kurs</a> [/xml:1:fc70b94cec] zamiast [xml:1:fc70b94cec]<a href="http://www.kurs.prv.pl">http://www.kurs.prv.pl</a> <a href="http://www.kurs.prv.pl">Kurs</a> [/xml:1:fc70b94cec] -------------------- ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Sprobuj czegos takiego:
[php:1:43af3b25b6]<?php function makelink($match) { $text = (empty($match[2]))? $match[1] : $match[2]; /* jeśli link zaczyna się od http:// lub ./ (link relatywny) to nie zmieniamy nic */ if (strpos($match[1],"http://") === 0 || strpos($match[1],"./") === 0) return '<a href="'.$match[1].'">'.$text.'</a>'; else return '<a href="http://'.$match[1].'">'.$text.'</a>'; } /* [ url=http://www.link.com][/url] */ $txt = preg_replace_callback('!]*)](.*)!U','makelink', $txt); /* [ url]www.link.com[/url] */ $txt = preg_replace_callback('!(.*)!U','makelink', $txt); ?>[/php:1:43af3b25b6] Dodatkowo jest sprawdzane czy link zawiera http:// na poczatku i w razie gdy nie ma to jest automatycznie dodawane. Jak masz pytania do kodu to śmiało. -------------------- Brak czasu :/
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 21.09.2003 Skąd: Truskaw Ostrzeżenie: (0%) ![]() ![]() |
[php:1:f0e1337592]<?php
$tekst=ereg_replace("([^[]*)","<a href="1">1</a>",$tekst); $tekst=ereg_replace("*)]([^[]*)","<a href="1">2</a>",$tekst); ?>[/php:1:f0e1337592] To mi zamienia linka tak jak trzeba tylko, że podsunąłeś mi pomysł żeby zrobić dodawanie "http://". Teraz chcę "wyłączyć" przed nawias http(jeśli jest) [php:1:f0e1337592]<?php $tekst=ereg_replace("http://([^[]*)","<a href="http://1">1</a>",$tekst); $tekst=ereg_replace("*)]([^[]*)","<a href="http://1">2</a>",$tekst); ?>[/php:1:f0e1337592] tylko co teraz zrobic żeby wyrażenie pasowało gdy nie ma "http://"? -------------------- ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Zobacz tak:
Kod [url=((http://)?([^[]*))]([^[]*)[/url]
-------------------- Brak czasu :/
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 21.09.2003 Skąd: Truskaw Ostrzeżenie: (0%) ![]() ![]() |
dzięki!
teraz następne pytanie... [php:1:3660fe94fc]<?php $tekst=ereg_replace(" Kod ([^[]*) ","<p style="background-color: #ffffff; border: solid #Ed9438 1px">1</p>",$tekst);
?>[/php:1:3660fe94fc] i chcę żeby wynikiem tego był kod w ramce z ponumerowanymi liniami. -------------------- ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
To juz kwestia wygenerowania odpowiedniego html'a.
Moze to Ci pomoze: http://forum.php.pl/viewtopic.php?t=5054 -------------------- Brak czasu :/
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
Wracając do semego BBCode -> HTML... może ten wątek Ci się przyda.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 21.09.2003 Skąd: Truskaw Ostrzeżenie: (0%) ![]() ![]() |
FiDO style nie mają tu niestety nic do rzeczy(niestety bo się na nich trochę znam
![]() BzikOS z tymi znacznikami juz sobie poradziłem ![]() to co ja chce zrobić to jest wyświetlenie tekstu z ponumerowanymi liniami. kod który wpisuję: Kod [php]linia1
linia2 linia3 linia4[/php] wynik: [php:1:afaeb97f9c]<?php linia1 linia2 linia3 linia4 ?>[/php:1:afaeb97f9c] -------------------- ![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Style nie maja, masz racje. Wcale tak nie twierdzilem. Bylo trzeba jednak kliknac w linka, ktory jest w tamtym topicu to zobaczylbys przyklad kodu z numerowaniem.
-------------------- Brak czasu :/
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 21.09.2003 Skąd: Truskaw Ostrzeżenie: (0%) ![]() ![]() |
i widzę zę robisz to
[xml:1:0d0b768f79] <table> <tr> <td> <code>1<br> 2<br> 3<br> 4<br> 5<br> itd.</code></td> <td><code>linia1<br> linia1<br> linia2<br> linia3<br> linia4<br> linia5<br> itd.</code></td></tr><table>[/xml:1:0d0b768f79] tylko teraz nie wiem jak zamienić Kod [php]<?kod php
komentarze funkcje: highlight_source(); [/php] na taką tabelkę jaką Ty zrobiłeś -------------------- ![]() |
|
|
![]()
Post
#11
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Przeanalizuj to: http://stargate.uz.zgora.pl:81/~fido/mozil...illa.php?source
-------------------- Brak czasu :/
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 21.09.2003 Skąd: Truskaw Ostrzeżenie: (0%) ![]() ![]() |
z tym sobie poradziłem fajnie to wymyśliłeś z ob.
teraz znow powracając do ereg replace. Powioedzcie co w tym jest źle. [php:1:685ca7fdb2]<?php $tekst=ereg_replace("[kod]^([kod])*[/kod]","<table><tr><td style="font-weight: bold">Kod:</td></tr><tr><td style="background-color: #ffffff; border: solid #Ed9438 1px">".str_replace("]","]",str_replace("[","[",htmlentities("1",TRUE)))."</td></tr></table>",$tekst); ?>[/php:1:685ca7fdb2] chcę żeby w zamienianym ciągu nie można było wstawić znacznika "[kod]" -------------------- ![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Co Cie tak ciagle trzyma przy tych "ereg"'ach?? Przeciez "preg"'i sa szybsze i maja wieksze mozliwosci...
[php:1:5b69d39a4c]<?php function zamien_kod($matches) { /* jesli taki ciag istnieje to zwracamy niezmieniony ciag */ if (strpos($matches[1],"[kod]") !== FALSE) return $matches[0]; $s = "<table><tr><td style="font-weight: bold">Kod:</td></tr><tr><td style="background-color: #ffffff; border: solid #Ed9438; 1px">"; $s.= str_replace(array("]","["), array("]","["), htmlentities($matches[1], true)); $s.= "</td></tr></table>"; return $s; } $tekst = preg_replace_callback("[/kod]!U", "zamien_kod", $tekst); ?>[/php:1:5b69d39a4c] I jeszcze wersja extended, ktora moze byc zastosowana bardziej uniwersalnie, dla kilku roznych bbcode'ow, sama sprawdza czy w srodku nie znajduje sie poczatkowy tag tego bbcode'u: [php:1:5b69d39a4c]<?php function zamien_kod($matches) { if (strpos($matches[2], $matches[1]) !== FALSE) return $matches[0]; $s = "<table><tr><td style="font-weight: bold">Kod:</td></tr><tr><td style="background-color: #ffffff; border: solid #Ed9438; 1px">"; $s.= str_replace(array("]","["), array("]","["), htmlentities($matches[2], true)); $s.= "</td></tr></table>"; return $s; } $tekst = preg_replace_callback("!([kod])(.+)[/kod]!U", "zamien_kod", $tekst); $txt = preg_replace_callback("!([inny_tag])(.+)[/inny_tag]!U", "zamien_kod", $txt); ?>[/php:1:5b69d39a4c] -------------------- Brak czasu :/
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 19.08.2003 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Nom, pregi są lepsze np. pod tym względem, że możesz do nich wrzucać tablice:
[php:1:4cf86383f6]<?php $tekst = 'jakis tekst & inny & ble'; $a = array( 'jakis tekst', 'inny', 'ble' ); $b = array( 'jakis inny tekst', 'to samo', 'bla' ); $tekst = preg_replace( $a, $b, $tekst ); // zwroci: jakis inny tekst & to samo & bla ?>[/php:1:4cf86383f6] -------------------- |
|
|
![]()
Post
#15
|
|
![]() Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Cytat z tym sobie poradziłem fajnie to wymyśliłeś z ob.
Cytat mixed highlight_string ( string str [, bool return])
If the second parameter return is set to TRUE then highlight_string() will return the highlighted code as a string instead of printing it out. If the second parameter is not set to TRUE then highlight_string() will return TRUE on success, FALSE on failure. W przypadku kolorowania składni buforowanie wyjścia nie jest potrzebne. W higlight_*() i kilku innych funkcjach (np. print_r()) w php 4.2.0 wprowadzono dodatkowy parametr return, który pozwala wymysić zwrócenie ciągu tekstu zamiast wysyłania go do przeglądarki. -------------------- "Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning."
Cudi's devBlog |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 21.09.2003 Skąd: Truskaw Ostrzeżenie: (0%) ![]() ![]() |
Dzięki fido przechodzę na pregi kolorowanie składni też już zrobiłem tylko jak dodać obsługę multiline'a chyba trzeba dodać /m albo /s tylko nie wiem gdzie :?
-------------------- ![]() |
|
|
![]()
Post
#17
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Flagi w preg'ach dodaje sie w ten sposob:
Kod /wyrazenie/flagi
Np. Kod #[kod](.+)[/kod]#U
Wyrazeniem jest [kod](.+)[/kod], a flagą U. Jak widac jako separator wyrazenia mozna stosowac dowolne znaki (byle poczatkowy i koncowy byl taki sam), najlepiej wybrac taki, ktorego nie ma w wyrazeniu, bo gdyby byl to trzebaby go wyescape'owac backslashem. Flagi wypisuje sie literka po literce, czyli jak ma byc ich wiecej to piszesz: Kod /wyrazenie/Usi
, gdzie U, s, i to flagi. -------------------- Brak czasu :/
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 21:02 |