Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [TinyMCE] Ignorowanie ustawionych opcji w init(), Nie reaguje na kodowanie encji właściwie
thek
post 23.10.2009, 12:52:54
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:
  1. entities : "160,nbsp,38,amp, i tak dalej",
  2. entity_encoding : "named",
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 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 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


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
KomputeromaniaK
post 16.03.2010, 20:10:34
Post #2





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 10.01.2009

Ostrzeżenie: (0%)
-----


Wiem że dość stary post, ale gdzie wstawić:
Kod
$tekst = str_replace('& quot;', '"', $tekst);

questionmark.gif
Go to the top of the page
+Quote Post
thek
post 16.03.2010, 20:35:52
Post #3





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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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 Wersja Lo-Fi Aktualny czas: 31.07.2025 - 09:52