Przejście do nowej linii przy stosowaniu include/require w PHP

Ostatnio borykałem się z problemem, który wydawał mi się głupawy, niedorzeczny i frustrujący. Oto bowiem cały mój ładny layout był przesunięty mniej więcej o wysokość tekstu od górnej krawędzi i zamiast do niej przylegać brzydko odstaje.

Początkowo sądziłem, że zabłąkało mi się jakieś zbędne <BR>. Później zacząłem podejrzewać jakiś fragment kodu PHP, w którym kontrolnie wyrzucałem wartości zmiennych. Podejrzewałem też funkcję error_reporting(). Kod źródłowy wyświetlonej strony był jednak czysty (w sensie nie widziałem źródeł problemu). Nie było niczego co sugerowałoby przerwę / nową linię. Poirytowało mnie to jeszcze bardziej gdy rozwiązałem problem pracując na laptopie, ale stosując te same procedury nie naprawiłem problemu na stacjonarnym.

W końcu nie wytrzymałem i wstukałem w wyszukiwarkę kilka słów-kluczy. Pierwsza pozycja w wynikach zaprowadziła mnie do rozwiązania. Opisano tutaj skąd się bierze ta felerna nowa linia gdy robimy include/require pliku php. Winę ponosi sposób zapisu plików kodowanych za pomocą UTF-8. Przy odpowiednim ustawieniu edytora do takiego pliku dodawane są dodatkowe znaki, tzw. Byte Order Mark, które po przemieleniu przez interpreter wyskakują jako nowe linie.

Aby rozwiązać ten problem należy zapisywać pliki UTF-8 bez BOM.

Zaraz mi to wyjaśniło przyczyny moich problemów z edytorem. Przypomniałem sobie, że jakiś czas temu trochę go przekonfigurowałem (na stacjonarnym), ale pozostawiłem niezmieniony edytor na laptopie. Dlatego na jednym kompie nieświadomie rozwiązałem problem a na drugim wciąż problem miałem.

Używam CoreEditor’a i aby wyeliminować problem należy wejść w Opcje -> Ustawienia -> CoreEditor. Następnie za zakładce „Otwieranie plików”, w sekcji „Zapisywanie” wyłączamy zaznaczenie przy opcji „Dołączaj identyfikator dla UTF8”. Podobne opcje da się pewnie znaleźć w innych aplikacjach.

Teraz wystarczy tylko ponownie wczytać i ponownie zapisać nasze stare pliki PHP kodowane z UTF8. Pozbędziemy się zbędnych bajtów w kodzie i znów będzie można robić include/require bez tej brzydkiej nowej linii.

krl

taki tan zwykły gość ;)

Może Ci się również spodoba

Masz coś do powiedzenia? Dawaj...