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:
entities : "160,nbsp,38,amp, i tak dalej", entity_encoding : "named",
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 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
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ń.