Właściwie nie jest to błąd tylko niedociągnięcie. Chodzi mi o to, że pisząc tekst w sNews i używając znaku "&", to jest on zapisywany za pomocą encji. To znaczy, że za każdym razem, gdy użyjemy "&" zostanie on zapisany w formie "&".
Nie byłoby w tym nic nadzwyczajnego, jednak co jeśli chcemy napisać fragment kodu (x)html? A wiadomo przecież, że użycie znaków "<" oraz ">" w oknie wpisywania tekstu interpretowane jest po publikacji jako kod (x)html - znak otwierający i zamykający. Należy te znaki zapisać w takim razie za pomocą encji.
Tu zaczynają się schody, ponieważ każda encja zaczyna się od znaku "&". A jak już wspomniałem sam ten znak automatycznie jest zamieniany na encję. Do czego to prowadzi? Posłużę się przykładem. Chcemy wpisać dany fragment kodu xhtml za pomocą encji:
<div> <ul> <li>Tekst 1</li> <li>Tekst 2</li> </ul> </div>
W podglądzie wpisu będzie wszystko wyglądało normalnie. Jednak po opublikowaniu wpisu ujrzymy taki fragment kodu:
<div> <ul> <li>Tekst 1</li> <li>Tekst 2</li> </ul> </div>
Każdy znak "&" w naszej encji został zamieniony na encję. Jak to dziwnie brzmi ;) Aby można było pisać za pomocą encji należy zmienić fragment w pliku snews.php odpowiadający za zmienianie "&" w encję. Szukamy w takim razie takiej linijki:
if(substr_count ($fulltext, '&')>0){$fulltext = str_replace('&', '&', str_replace('&', '&', $fulltext));}
Ten wiersz prawdopodobnie odpowiada za zamianę "&" na encję. Można go usunąć, aby było wyświetlane normalne "&". Jednak lepiej jest zakomentować tę linijkę. Jest to po to, aby widzieć jakie zmiany zrobiliśmy w snews.php. Komentujemy linijkę w ten sposób:
//if(substr_count ($fulltext, '&')>0){$fulltext = str_replace('&', '&', str_replace('&', '&', $fulltext));}
Po tym zabiegu można pisać już encje. Przykładowe kody (x)html będą wyglądać poprawnie.
Komentarze