![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Bylo na forum juz duzo podobnych tematow, ale nie taki sam
![]() Mam cos takiego:[php:1:2fd063b878]<?php $wiersz[news] = eregi_replace(": )", "<img src=img/buzka_ok.gif>", $wiersz[news]); $wiersz[news] = eregi_replace("<", "&", $wiersz[news]); $wiersz[news] = eregi_replace(">", "&", $wiersz[news]); ?>[/php:1:2fd063b878] Przy wypełnianiu forumularza user moze wpisac <b>123</b> i na stronie mu wysiwtli efekt taki sam jaki wpisał do forumularza, czyuli beda widoczne znaczniki html, ale chcem dodac to wysiwtlania ze gdy po wpisaniu tzw. buzki to zamieni na <img...> ale wtedy w oknie przegladarki dostaje taki sam efekt jak przy "pogrubienu" tekstu?? Jak to najlepiej rozwiazac? Zeby znaczniki HTML byly widoczne tak jak user wpisze ale zeby buzki sie zamienialy na obrazki?? Aha i jeszcze jedno jak zrobic jak user wpisze : P to zeby : PPPP tak samo zamienialo na buzke bezwzgledu na ilosc ostatniego znaku, to chyba wyrazenia regularne sa potrzebne -------------------- PHP Developer
"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola |
|
|
![]()
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%) ![]() ![]() |
Cytat Aha i jeszcze jedno jak zrobic jak user wpisze : P to zeby : PPPP tak samo zamienialo na buzke bezwzgledu na ilosc ostatniego znaku, to chyba wyrazenia regularne sa potrzebne
Moze [php:1:abbc61664a] eregi_replace(": P+", "<img jakis tam>", $wiersz[news]); [/php:1:abbc61664a] Nie mam teraz jak sprawdzic, wiec nie recze, ze zadziala. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 28.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jak to najlepiej rozwiazac?
Zeby znaczniki HTML byly widoczne tak jak user wpisze ale zeby buzki sie zamienialy na obrazki?? Rozwiazanie jest bardzo proste, poprostu zamien kolejnosc :] [php:1:1b87e5f793]<?php $wiersz[news] = eregi_replace("<", "&", $wiersz[news]); $wiersz[news] = eregi_replace(">", "&", $wiersz[news]); $wiersz[news] = eregi_replace(": )", "<img src=img/buzka_ok.gif>", $wiersz[news]); ?>[/php:1:1b87e5f793] |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 67 Pomógł: 0 Dołączył: 5.05.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie tak, jak to napisał garr
twój błąd polegał na tym, że najpierw zamieniałeś "buźkę" na <.............>, a potem to co otrzymałeś zamiast "buźki", czyli owe <..........> zamieniałeś na &............& Rozumiesz błąd? -------------------- *******************************
Uściski jak pociski :O) wirtek :O) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 28.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
no dobra to teraz ja, wyskocze z podobnym problemem :)
W mojej wyszukiwarce rozbijam $keywords na tokeny [php:1:99673e53eb] // fragment prezentacji wyniku $body = "Jakas tam tresc"; for ($token = strtok($keywords, " "); $token != ""; $token = strtok(" ")) { $body = preg_replace("/$token/i", "<b class='found'>$0</b>", $body); } [/php:1:99673e53eb] Działa milutko, z małym wyjątkiem :) Jeśli $keywords dla przykładu zrobie : "jak las" w pierwszym przebiegu wynik będzie "<b class='found'>Jak</b>as tam tresc", w drugim przebiegu łyknie fragment htmla tzn. wybolduje paramtr class :) Kurka, kompletnie nie mam ideii jak to elegancko obejść :/ Moze jakies pomysły? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
phpBB robi to zdaje się w ten sposów, że najpierw pobiera sam tekst, bez html'a, następnie w pętli wyszukuje wszystkie słowa, jednak zamiast od razu je zamieniać, zapisuje je do tablicy, w postaci tab[$słowo] = $słowo_po_zmianie, a następnie, przy pomocy np. strtr ($nasz_text, $tab) wykonuje zmiany.
A przynajmniej tak mi sie zdaje ![]() -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 28.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Nie zabardzo mi to biegało wiec wykombinowałem to tak:
[php:1:37b2947857] $keywords = str_replace(">", "", $keywords); $keywords = str_replace("<", "", $keywords); //itp.... ze względu na prega trzebaby wyciąć znaki specjalne $patterns = array(); $replacements = array(); for ($token = strtok($keywords, " "); $token != ""; $token = strtok(" ")) { if ($token != "b" && $token != "B") { $patterns[] = "/$token/si"; $replacements[] = "<b>$0</b>"; } } // .... $body_dst = preg_replace($patterns,$replacements,$body_src); $body_dst = str_replace("<b>","<b class='found'>",$body_dst); [/php:1:37b2947857] Niezbyt eleganckie, ale działa :) |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Jesli chodzi o moj problem to juz sobie poradzilem
![]() thx garry -------------------- PHP Developer
"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 06:44 |