misty
18.01.2012, 13:44:06
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 >.
Czego moglabym uzyc aby tego uniknac?
pzdr,
misty
gothye
18.01.2012, 13:46:24
misty
18.01.2012, 13:48:47
No co Ty. Ale przeciez te > 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
18.01.2012, 13:49:29
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
18.01.2012, 13:51:16
@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
htmlspecialchars_decodeProblem polega na tym, że masz dwukrotnie filtrowany tekst (albo i lepiej), tzn jeśli wpiszesz np.:
"Test"
zapisać powinno:
Kod
"Test"
natomiast, Ty to filtrujesz 2-krotnie, w wyniku czego dostajesz:
Kod
"Test"
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
18.01.2012, 13:54:52
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:
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:
;/completePages>
- tutaj nie powinno byc srednika
/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
18.01.2012, 13:58:19
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
18.01.2012, 14:02:52
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 > 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
18.01.2012, 14:04:44
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
18.01.2012, 14:05:57
No wlasnie widze. to na $chunk powinnam tego uzyc, czyli juz na pocietym kawalku, a nie na samym poczatku. Juz kumam, dzieki

pzdr!
misty
by_ikar
18.01.2012, 14:13:10
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
18.01.2012, 14:20:55
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
18.01.2012, 14:26:25
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.