Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[PHP] Pasek narzedzi w formularzach

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[PHP] Pasek narzedzi w formularzach

Post 18.02.2004, 18:02:07

Witam!
Ostatnio probuje napisac pasek narzedzi (pogrubienie itp) do formularza... probuje zrobic cos w miare podobnego do tego z forum. Stanalem w miejscu, gdy trzeba zamienic (url)http://www.adres.pl(/url) na <a href="http://www.adres.pl">http://www.adres.pl</a> ... czy ktos moglby mi udzielic porady... myslalem nad tym ale jakos nie mam zadnego pomyslu :| Problem oczywiscie w tym ze to (url)http://www.adres.pl(/url) nalezy wyodrebnic z calej tresci, ktora mam powiedzmy zapisana w zmiennej $body .

P.S Oczywiscie zamiast ( i ) poinny byc [ i ] tylko chcialem zebyscie widzieli dokladnie o co mi chodzilo...
Avatar użytkownikaKooPeR
Posty: 202
Dołączył(a): 10.07.2003
Lokalizacja: Słupsk

Post 18.02.2004, 18:12:31

Pogrubienie:
Kod: Zaznacz cały
$body = str_replace("(b)", "<span style=\"font-weight: bold;\">", $body);
$body = str_replace("(/b)", "</span>", $body);


oczywiscie zamiast (b) i (/b) wpisz nawiasy []

Linki:

Kod: Zaznacz cały
preg_match_all("/\[url](.*?)\[\/url]/s", $body, $sekcje);
foreach ($sekcje[0] as $sekcja) {
    $blok = str_replace("[url]", "", $sekcja);
    $blok = str_replace("[/url]", "", $blok);
    if (substr_count("http://", $blok) == 0) $blok = "http://".$blok;
    $body = str_replace($sekcja, "<a href=\"".$blok."\">".$blok."</a>", $body);
};



To tyle. Pozdrawiam.
Ostatnio edytowano 20.02.2004, 01:24:33 przez Kos-TEK, łącznie edytowano 1 raz
e-Zlecenia.pl - serwis wolnych strzelców - już dostępny...
Kos-TEK
Posty: 79
Dołączył(a): 13.07.2002

Post 18.02.2004, 18:44:40

Ok moglbys mi wytlumaczyc jeszcze jak ma to dzialac. Widze ze $sekcja to (url)http://www.adres.pl(/url) a $blok to http://www.adres.pl tylko skad sie wziela zmienna $sekcje ?? i na jakiej zasadzie dziala tutaj to preg_match_all bo z wytlumaczenia manuala nie wiele zrozumialem :/
Avatar użytkownikaKooPeR
Posty: 202
Dołączył(a): 10.07.2003
Lokalizacja: Słupsk

Post 18.02.2004, 19:19:29

Poczytaj o preg_match_all - a tak naprowadzajac Cie to zmienne te sa ustawiane przez te funkcje...
[ [url="https://github.com/bendi/code/tree/master/zend_form_decorator_js_validation"]ZF client side validation[/url] | [url="http://2lips.pl/blog/jquery-sticky-buttons/"]jQuery sticky buttons[/url] ]
Avatar użytkownikabendi
junkie

Posty: 2866
Dołączył(a): 08.12.2003
Lokalizacja: Wrocław

Post 19.02.2004, 17:52:44

KooPeR napisał(a):Mowie, ze nie zrozumialem, a ty mi nadal to polecasz.

Faktycznie przepraszam

otoz preg_match_all dziala na tej zasadzie ze przepisuje wszystkie pasujace do szablonu dane to tablicy, czyli jezeli mamy
Kod: Zaznacz cały
<?
$tekst ='costam costam i tutaj cos jeszcze';
preg_match_all('/(cos)([\w]{3})/', $tekst, $matches);
/*wylapuje wszystko co zawiera [i]cos[/i] plus 3 znaki po tym */
print_r($matches);
?>

Zwroci:
Kod: Zaznacz cały
Array
(
    [0] => Array
        (
            [0] => costam
            [1] => costam
        )

    [1] => Array
        (
            [0] => cos
            [1] => cos
        )

    [2] => Array
        (
            [0] => tam
            [1] => tam
        )


Jak widzisz uklad tablicy jest taki sam jak uklad zmiennych wewnatrz silnika wyrazeniowego. Czyli calosc jest przepisywana jako pierwszy element, a pozniej kolejne nawiasy jako kolejne elementy tablicy ;]
Avatar użytkownikaKooPeR
Posty: 202
Dołączył(a): 10.07.2003
Lokalizacja: Słupsk

Post 20.02.2004, 00:51:27

Kod: Zaznacz cały
<?

preg_match_all("/\<a>(.*?)\<\/a>/s", $body, $sekcje);
foreach ($sekcje[0] as $sekcja) {
    $blok = str_replace("<a>", "", $sekcja);
    $blok = str_replace("</a>", "", $blok);
    if (strpos("http://", $blok) == 0) $blok = "http://".$blok;
    $body = str_replace($sekcja, "[url]".$blok."[/url]", $body);
};

?>


Mogłem się pomylić ale jeśli nie to powinno działać :)
3 Komputery:
C2D E4400, P5N-E SLI, 2x1 GB DDR2 800 CL4, GF 8800GTS
A64 3000+, A8N-SLI, 2x512 MB DDR 400, GF 6800 Ultra
Duron 800, ECS K7S5A, 2x 128 MB SDR, Radeon 8500 Pro

www.jastrzebie.prv.pl
Avatar użytkownikaCross
Michał

Posty: 625
Dołączył(a): 19.04.2003
Lokalizacja: Jastrzębie Zdrój

Post 29.02.2004, 02:55:23

Niestety ale to co napisales nie ma prawa dzialac chociazby ze wzgledu na to ze nigdzie w tekscie nie wystepuje znacznik <a>, jest tylko <a href="costam">. Dzieki za wytlumaczenie tego calego preg_match_all ale mimo wszystko raczej nie bede potrafil sie tym dobrze posluzyc, gdyz oprocz tego co powiedziales sa tam rozne inne dziwne znaczki typu (.*?) czy [\w] sluzace pewnie do roznych celow. Czy ktos z Was umialby zrobic cos takiego jak poczatkowo w temacie tylko w druga strone. W tekscie zapisanym w zmiennej $body wystepuje <a href="http://www.adres.pl">http://www.adres.pl</a> a ja chcem zeby zamienialo mi to na (url)http://www.adres.pl(/url). I oczywiscie zamiast () ma byc []. Prosilbym bardzo ;)
http://www.inventstudio.pl/ - Tworzymy Nową Jakość: Projektowanie Stron WWW
http://www.inventblog.pl/ - Internetowy Punkt Odniesienia: Psychologia Sukcesu, E-biznes, E-marketing, Copywriting, Internet, Webdesign
Avatar użytkownikaKooPeR
Posty: 202
Dołączył(a): 10.07.2003
Lokalizacja: Słupsk

Post 29.02.2004, 04:15:44

Kod: Zaznacz cały
<?php
$tekst = 'costam bla bla
 <A href="http://www.semestr.pl/">http://www.semestr.pl</A>';
echo preg_replace('/<A[\s]+href="(.+?)">(.+?)<\/A>/is', '[url]$1[/url]', $tekst);
?>


Jakby bylo malo luknij tam:
www.semestr.pl/bendi/preg_php4.htm (moze zaniedlugo bedzie w barwach jednej takiej strony dla webMasterow, ale nie zapeszam :))
Jezeli tobie lub komu innemu chcialo sie tam luknac to czekam na opinie na PW.
[ [url="https://github.com/bendi/code/tree/master/zend_form_decorator_js_validation"]ZF client side validation[/url] | [url="http://2lips.pl/blog/jquery-sticky-buttons/"]jQuery sticky buttons[/url] ]
Avatar użytkownikabendi
junkie

Posty: 2866
Dołączył(a): 08.12.2003
Lokalizacja: Wrocław

Post 29.02.2004, 13:06:59

Owszem, zajrzalem na ta strone i musze przyznac, ze jestem mile zaskoczony, bo to co bylo ciemne stalo sie jasne - w koncu zrozumialem :D
Avatar użytkownikaKooPeR
Posty: 202
Dołączył(a): 10.07.2003
Lokalizacja: Słupsk


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Yahoo [Bot] i 5 gości

Subskrypcja

Mamy 43460 zarejestrowanych użytkowników.
Najnowszy użytkownik: pitak


Nasi użytkownicy napisali:

  • 909731 wiadomości
  • w 236506 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)