Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zamiana kodu HTML!?
kicaj
post
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 tongue.gif
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
Go to the top of the page
+Quote Post
FiDO
post
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.
Go to the top of the page
+Quote Post
garry
post
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]
Go to the top of the page
+Quote Post
wirtus
post
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)
Go to the top of the page
+Quote Post
garry
post
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?
Go to the top of the page
+Quote Post
DeyV
post
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 aaevil.gif


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
garry
post
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 :)
Go to the top of the page
+Quote Post
kicaj
post
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 smile.gif

thx garry


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 06:44