bug #325 [zamiana <font> na <span>]

0

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>

0

no ale, ja myślę że trochę dziwne wyjście, tym bardziej że trochę może też pozmieniać kody w dziala zwłaszcza php/js a w ten sposób i tak się wszystkiego nie pozmienia

0

To co proponujesz.

0

znaczy nie wiem czy dobrze zrozumiałem
proponuję aby tag font dalej był tylko już wirtualnie jako bbCode a nie html, a posty aktualne zostały zostawione, tylko przeskalować wynik tak żeby 3 (?) był średni, tj. round i mnożenie albo em czy coś

i to zapytanie wydaje mi się jednak mordercze, dlatego proponuję go uprościć kosztem "uniwersalności" bo np na forum znacznik zawsze wstawiał <... size="5" ...> bez żadnych dodatkowych spacji czy tabulacji

w sumie wydaje mi się że wygląd posta jest mniej ważny niż ewentualny kod w nim zawarty

0

No ale o to właśnie chodzi.. na forum zostaje <font jako "bbcode"
To zapytanie w locie przerabia na span
A ta zamiana w bazie to tylko cyferki typu <font size="3" na <font size="16" by zachowac wielkosc czcionki.. bo inaczej wszystko co bylo w <font size.. bedzie teraz mikroskopijne

1 użytkowników online, w tym zalogowanych: 0, gości: 1