![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Witam. Dziś spotkałem się z "nieco" dziwnym zachowaniem TinyMCE. Dotychczas miałem
entity_encoding wyłączone bo było zbędne i zdawałem się na czyszczenie domyślne w tym edytorze. Problem wystąpił przed chwilą. Zapis bowiem apostrofów podwójnych sprawił, że gdy podaję link w artykule czy newsie, zamienia mi je na encję quot. Nie byłoby w tym problemu, gdy by nie fakt, że taki zapis generuje doklejanie do adresu adresu bazowego strony. Co wygląda mniej więcej w pasku statusu tak: http://www.adres_bazowy.pl/"http://ww..._linku.pl". Po wejściu do edycji wszystko wygląda w porządku, ale zapis do bazy danych występuje taki: href=& quot;http://www.adres_w_linku.pl& quot; zamiast href="http://www.adres_w_linku.pl" Zmieniłem więc w sekcji init według manuala to co było potrzebne, czyli zdefiniowałem własne entities: Tyle, że nie dawałem tam znaków dla quot, by nie zamieniał. Kupa. Nadal zamienia. Pomyślałem, że będę sprytniejszy i zamienię to na encje numeryczne i ustawiłem: entity_encoding: "numeric" Teraz w bazie jest jeszcze większy zgryz, bo część encji jest oczywiście jako numeryczne, ale quot nadal jest w postaci encji normalnej, tak jakby on nie był tym objęty wcale (IMG:style_emoticons/default/blinksmiley.gif) Co weselsze... zamieniałem w bazie na sztywno na podwójny apostrof i potem przez TinyMCE dawałem update przy każdym z przypadków. Po odczycie sprawdzałem zapis w bazie i on sobie przywracał z " ponownie na quot co mnie z leksza wnerwia, bo nie po to mu w init to ustawiam, by on miał to gdzieś. Co ciekawe to oczywiście w podglądzie źródła HTML w TinyMCE apostrofy są normalne, czyli nie są jako encje numeryczne czy nazwane. Zamiana jest więc gdzieś na etapie walidacji kodu, na który opcje w init powinny mieć wpływ. Tak się jednak nie dzieje. Ktoś spotkał się z tak dziwnym zachowaniem TinyMCE względem encji? Bo to wygląda tak jakby quot miał specjalne uprawnienia w tym edytorze i był poza wszelkimi funkcjami konwertującymi. A właściwie to tyle, ze zawsze jest do nazwanej encji konwertowany, niezależnie od ustawień. EDIT: Problem rozwiązałem w sposób może mało elegancki, ale skuteczny. Jesli ktoś znajdzie rozwiązanie inne, poprzez modyfikację sekcji init, chętnie przeczytam. Na chwilę obecną moim rozwiązaniem okazało się: $tekst = str_replace('& quot;', '"', $tekst); Ale usuńcie po & spacje w temacie całym, ja musiałem je dać bo mi konwertuje forum ją do znaku apostrofa zwykłego i nie widzicie różnicy (IMG:style_emoticons/default/smile.gif) Jeśli więc ktoś będzie miał podobny problem, to jest to najszybsza metoda. Oczywiście dla utf i innych, choć wolniejsze to konieczne będzie użycie innych funkcji (preg_replace może?) dla wielobajtowych kodowań. Ten post edytował thek 23.10.2009, 13:46:00 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ja wstawiałem to tuż przed zapisem do bazy, ale równe dobrze może to być zrobione na etapie przed walidacja. A najprościej rzecz ujmując -> można kiedykolwiek pomiędzy momentem startu skryptu obsługizmienne $_POST a zapisem do bazy.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.09.2025 - 07:09 |