Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [TinyMCE] Ignorowanie ustawionych opcji w init()
Forum PHP.pl > Forum > Gotowe rozwiązania
thek
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ń.
KomputeromaniaK
Wiem że dość stary post, ale gdzie wstawić:
Kod
$tekst = str_replace('& quot;', '"', $tekst);

questionmark.gif
thek
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.
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-2024 Invision Power Services, Inc.