Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak uniknac znakow typu &gt
Forum PHP.pl > Forum > PHP
misty
Czesc,
mam takie pytanie - gdy wypisuje sobie fragmenty tekstu i ktorys z nich zaczyna sie od < lub / to dodaje mi srednik! czasem, po niektorych znakach dodaje mi &gt.
Czego moglabym uzyc aby tego uniknac?

pzdr,
misty
gothye
np. : preg_replace , str_replace
misty
No co Ty. Ale przeciez te &gt itp to sa jakies specjalne znaki ktore sa dodawane przed jakimis specjalnymi znakami, np wlasnie przed /. Nie znam calej listy tych znakow ktore mialabym usuwac. Nie ma do tego niczego gotowego?

pzdr
rocktech.pl
Witam.

Doprecyzuj pytanie.

Z tego co widzę to masz jakieś rozwiązanie które dodaje tekst do bazy, wcześniej przepuszczając go przez jakąś pseudo-walidację.
nospor
@misty ostatnio pisałem ci o htmlspiecialchars(). Jesli tego używasz to nic dziwnego ze dostajesz co dostajesz.
Pokaż lepiej cały kod, i pokaż dokładnie tekst na jakim operujesz
vee
htmlspecialchars_decode

Problem polega na tym, że masz dwukrotnie filtrowany tekst (albo i lepiej), tzn jeśli wpiszesz np.:

"Test"

zapisać powinno:

Kod
"Test&quot


natomiast, Ty to filtrujesz 2-krotnie, w wyniku czego dostajesz:

Kod
"Test&quot


EDIT: ehh, forum mi parsuje posta, więc nie ma on żadnego sensu, jeśli chodzi o przykłady.

To jest oczywiście moje przypuszczenie, niestety nie pokazałaś żadnych konkretnych informacji nt kodu, tekstu itd., więc można powiedzieć, że wróżę teraz z fusów.
misty
Dobra, wiec po kolei. Mam sobie pole w bazie ktore trzyma tekst. Tekst ten moze byc dlugi, dlatego tez musze go ciac (po stronie php). Definiuje max dlugosc linijki i po takiej dlugosci tne tekst. Tekst ten moze byc zwyklym tekstem lub moze byc to xml. Wczesniej pisalam o tym ze nie wychwyca mi tagow xml, dlatego teraz uzywam htmlspecialchars, czyli:

  1. $msg = htmlspecialchars($msg);


i potem to $msg tne. Oczywiscie dla xmli zdarza sie ze uciete sa tagi, ze nowa linijka zaczyna sie od / lub <. I to jest ok z punktu widzenia tego co ma byc. Jednak zauwazylam ze gdy niektore linijki zaczynaja sie od pewnych znakow, to dodawane sa jakies ekstra. Podam pare przykladow:

  1. ;/completePages>
- tutaj nie powinno byc srednika
  1. /passPrinterOnly> <qck&g"
- tu z kolei na koncu nie powinno byc &g


Znaki te same mi sie dodaja. Chcialabym sie dowiedziec co moge z tym zrobic, zeby sie nie dodawaly.


pzdr,
misty
nospor
Cytat
i potem to $msg tne
misty, w ogole nie przyjelas do wiadomosci poprzedniego tematu :/

htmlspiecialchars sluzy tylko i wylacznie do wyswietlania na ekran, by zobaczyc co tam dokladnie siedzi.
skoro ty robisz operacje na tekscie to nie wolno ci stosować htmlspiecialchars bo zaburzasz strukture tekstu.

Tlumaczylem ci przecież ze te znaczniki XML ty ciągle masz tylko nie wyświetla ich przeglądarka. Zrozum to wkoncu dziewczyno.
misty
No ale zrozum ze ja je musze wyswietlic!

jak robie: echo $chunk to $chunk musi zawieraz tez te znaczniki, wypisane na ekran, jako tekst. Jak nie dawalam wczesniej htmlspecialchars na $msg to w ogole mi tych znacznikow nie widzial (oczywiscie, byly w zrodle strony, ale nie o to mi przeciez chodzi). Kumasz co ja musze osiagnac?

1. Mam tekst ktory moze byc xml'em
2. Zanim rozpoczne moja petle w ktorej tne go na N znakow w moim $msg (gdzie znajduje sie caly tekst) musza byc rowniez znaczniki xml aby liczenie sie zgadzalo
3. Wyswietlam fragment po fragmecie, czyli kazdy pociety $chunk
4. $chunk moze zawierac przelamane tagi xml, czyli moze zaczynac sie od <, >, /, etc
5. W $chunk nie moga sie pojawic zadne dodatkowe rzeczy typu jakies &gt czy dodatkowe sredniki

Mozliwe ze zle podeszlam do tematu skoro teraz mam ten problem. Ale to czy ktos z Was jest mi w stanie powiedziec czego powinnam uzyc by uzyskac to czego chce?

pzdr,
misty
nospor
Cytat
No ale zrozum ze ja je musze wyswietlic!
To sobie wyświetlaj! Nikt ci tego nie broni. Ale htmlspiecialchars masz użyc bezposrednie przed wyswietleniem, a nie przed operacjami na tym tekscie!

Cytat
Kumasz co ja musze osiagnac?
Ja cały czas kumam, tylko ty nie.
misty
No wlasnie widze. to na $chunk powinnam tego uzyc, czyli juz na pocietym kawalku, a nie na samym poczatku. Juz kumam, dzieki smile.gif


pzdr!

misty
by_ikar
Jak muszę podzielić jakiś tekst (zajawki itp) to nie dziele go ilością znaków, a dziele go ilością wyrazów. Możesz sobie założyć jakąś średnią ilość tych wyrazów i na podstawie tej średniej dzielić swój tekst. Wtedy nie powstaną problemy z jakimś dziwnym rozdzielaniem wyrazów czy znaczników html/xml. IMO jedyne co powinnaś robić na takim tekście to escape, a później stripslashes. htmlspecialchars, nie jest ci do niczego potrzebny, jeżeli potrzebujesz wyświetlić html/xml. Chyba że te znaczniki mają się wyświetlić, w sensie listowanego kodu, to wtedy możesz użyć htmlspecialchars plus dzielenie na wyrazy, coby się te znaczniki nie rozwalały.
Uriziel01
Jeżeli to xml to chyba wypadało by wyświetlać go poprzez nagłówek jako XML. Jest to chyba logiczne i nie widzę sensu w htmlspiecialchars. Skoro nie wyświetlasz go jako xml tylko jako normalny tekst to równie dobrze możemy sobie darować te znaczniki. Chyba że ty z celową premedytacją wyświetlasz xml jako html, wtedy zwracam honor i przepraszam za przytyk.
misty
tak, takie jest wymaganie, pisalam o tym wczesniej. To ma sie wyswietlac jako zwykly tekst (html), tagi moga by rozwalone, kryterium jest zachowanie N dlugosci znakow.


Juz mi dziala, problelem bylo to ze uzywalam htmlspecialchars na poczatku, zamiast uzyc tego na koncu, przed samym wyswietleniem.

dzieki za wszystkie rady,
pzdr,

misty
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.