dawno temu zgłoszony został błąd
http://4programmers.net/coyote/bug.php?id=325
Wymodziłem RegExp + funkcja pomocnicza do wykonania tej zamiany w locie:
$search = '/<font\s+(?:(?:size\s*=\s*(["\'])?(\d+)\1?\s*(?:color\s*=\s*(["\'])?(\w+)\3?)?)|
(?:color\s*=\s*(["\'])?(\w+)\5?\s*(?:size\s*=\s*(["\'])?(\d+)\7?)?))\s*>/ie';
$replace = "'<span style=\"' . (('$2$8' != '')?'font-size: $2$8px;':'') . (('$4$6' != '')?'color: $4$6;':'') . '\">'";
$m = preg_replace($search, $replace, $row['post_post']);
$m = str_replace('</font>', '</span>', $m);
Działa w brew pozorom szybko (dla jednego postu z kilkunastoma znacznikami FONT na mojej maszynie na oko 0.2 tysięczne sekundy).
Jednak piszę tu bo nie do końca wiem co zrobić. Chodzi o stare [obecne] posty w bazie - po wprowadzeniu poprawki wszystko z tagiem FONT będzie bardzo małe. Kiedyś już taka zmiana nastąpiła i teraz jak dobrze poszukać można znaleźć posty z jakimiś wielgachnymi czcionkami...
Czy dobrym pomysłem jest zmodzenie tymczasowego skryptu, odczyt z bazy każdego posta z warunkiem "WHERE post_post LIKE '%<font%'", podmiana np. <font size=3 na <font size=16 i zapis z powrotem?
Obecnie size oznacza bliżej nieokreśloną jednostkę bezpośrednio przekazywaną tagowi FONT. W nowszej wersji liczba ta będzie jednostką w pixelach. Dzięki temu w końcu czcionka "mała" nie będzie większa od normalnej. W chwili obecnej jedynie size=1 jest mniejsza od czcionki domyślnej.
//wstawiłem enter w RegExp po '|' by nie rozwalało strony</span>