Ucieczka z wyrażenia regularnego w PHP. Ucieczka (czyli co musisz wiedzieć, aby pracować z tekstem w tekście) Znaki specjalne w pojedynczych i podwójnych cudzysłowach

  • Tłumaczenie
  • Instruktaż

Zastrzyki SQL, fałszowanie żądań między witrynami, uszkodzony XML… Straszne, przerażające rzeczy, przed którymi wszyscy chcielibyśmy być chronieni, ale chcemy tylko wiedzieć, dlaczego to wszystko się dzieje. W tym artykule wyjaśniono podstawową koncepcję stojącą za tym wszystkim: ciągi znaków i obsługę ciągów w ciągu znaków.

Główny problem. To tylko tekst. Tak, tylko tekst – to jest główny problem. Prawie wszystko w systemie komputerowym jest reprezentowane przez tekst (który z kolei jest reprezentowany przez bajty). Czy to możliwe, że niektóre teksty są przeznaczone dla komputerów, a inne dla ludzi? Ale oba nadal pozostają tekstem. Aby zrozumieć o czym mówię, oto mały przykład:
Homo Sapiens Załóżmy, że istnieje tekst w języku angielskim, którego nie chcę tłumaczyć na rosyjski
Nie uwierzysz: to jest tekst. Niektórzy nazywają to XML, ale to tylko tekst. Może nie nadawać się do pokazania nauczycielowi języka angielskiego, ale to wciąż tylko tekst. Można to wydrukować na plakacie i chodzić z nim na wiece, można to napisać w liście do mamy... to tekst.

Chcielibyśmy jednak, aby pewne fragmenty tego tekstu miały jakieś znaczenie dla naszego komputera. Chcemy, aby komputer mógł oddzielnie wyodrębnić autora tekstu i sam tekst, abyśmy mogli coś z nim zrobić. Na przykład przekonwertuj powyższe na to:
Załóżmy, że istnieje tekst w języku angielskim, którego nie chcę tłumaczyć na rosyjski przez Homo Sapiens
Skąd komputer wie, jak to zrobić? Ano dlatego, że bardzo wygodnie otoczyliśmy pewne fragmenty tekstu specjalnymi słowami w zabawnych nawiasach, np. i. Skoro już to zrobiliśmy, możemy napisać program, który wyszukuje te konkretne części, wyodrębnia tekst i wykorzystuje go do własnego wynalazku.

Innymi słowy, w naszym tekście zastosowaliśmy pewne reguły, aby wskazać jakieś specjalne znaczenie, którego mógłby użyć ktoś inny, kierując się tymi samymi zasadami.
OK, to wcale nie jest takie trudne do zrozumienia. A co jeśli chcielibyśmy użyć tych zabawnych nawiasów, które mają w naszym tekście jakieś specjalne znaczenie, ale bez użycia tego właśnie znaczenia?.. Coś w tym stylu:
Homo sapiens< n and y >
Znaki „” nie są niczym specjalnym. Można ich legalnie używać w dowolnym miejscu, w dowolnym tekście, jak w powyższym przykładzie. Ale co z naszym pomysłem na słowa specjalne, np.? Czy to oznacza, że ​​jest to również pewnego rodzaju słowo kluczowe? W XML - być może tak. A może nie. To jest niejednoznaczne. Ponieważ komputery nie są zbyt dobre w radzeniu sobie z niejasnościami, coś może dać nieoczekiwany wynik, jeśli sami nie stawiamy kropki nad „i” i nie rozwiązujemy niejasności.
Dylemat ten można rozwiązać zastępując niejednoznaczne symbole czymś jednoznacznym.
Homo Sapiens Podstawowa matematyka mówi nam, że jeśli x< n and y >n, x nie może być większe niż y.
Teraz tekst powinien stać się całkowicie jednoznaczny. „”.
Techniczna definicja tego brzmi zastawianie, uciekamy od znaków specjalnych, gdy nie chcemy, aby miały one własne specjalne znaczenie.
uciec |iˈskāp| [nie ob. ] uwolnić się [ z obj. ] nie zauważać / nie pamiętać [...] [ z obj. ] IT: powód do odmiennej interpretacji [...]
Jeśli pewne znaki lub sekwencje znaków w tekście mają specjalne znaczenie, muszą istnieć zasady określające sposób postępowania w sytuacjach, w których należy użyć tych znaków bez odwoływania się do ich specjalnego znaczenia. Innymi słowy, ucieczka odpowiada na pytanie: „Jeśli te symbole są tak wyjątkowe, jak mogę ich użyć w moim tekście?”.
Jak widać w powyższym przykładzie, ampersand (&) jest także znakiem specjalnym. Ale co, jeśli chcemy napisać „


Jeśli Twoi użytkownicy będą dobrzy i mili, opublikują cytaty starych filozofów, a wiadomości będą wyglądać mniej więcej tak:

Wysłane przez Platona 2 stycznia o 15:31

Mówi się, że powiedziałem: „Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat”.


Jeśli użytkownicy są mądrzy, prawdopodobnie będą rozmawiać o matematyce, a komunikat będzie następujący:

Wysłane przez Pascala 23 listopada o 04:12

Podstawowa matematyka mówi nam, że jeśli x< n and y >n, x nie może być większe niż y.


Hmm... Znowu ci profanatorzy naszych nawiasów. No cóż, z technicznego punktu widzenia mogą być one niejednoznaczne, ale przeglądarka nam to wybaczy, prawda?


OK, STOP, co do cholery? Jakiś dowcipniś wprowadził tagi JavaScript na Twoje forum? Każdy, kto zobaczy tę wiadomość w Twojej witrynie, pobiera teraz i wykonuje skrypty w kontekście Twojej witryny, które mogą zrobić nie wiadomo co. I to nie jest dobre.

Nie należy tego rozumieć dosłownie. W powyższych przypadkach chcemy w jakiś sposób powiedzieć naszej bazie danych lub przeglądarce, że to tylko tekst, nie rób z nim nic! Innymi słowy, chcemy „usunąć” specjalne znaczenie wszystkich znaków specjalnych i słów kluczowych z informacji podanych przez użytkownika, ponieważ mu nie ufamy. Co robić?

Co? Co mówisz, chłopcze? Och, mówisz, „ekranowanie”? I masz całkowitą rację, weź ciasteczko!
Jeśli zastosujemy ucieczkę do danych użytkownika przed połączeniem ich z zapytaniem, to problem zostanie rozwiązany. W przypadku naszych zapytań do bazy danych będzie to wyglądało mniej więcej tak:
$nazwa = $_POST["nazwa"]; $nazwa = mysql_real_escape_string($nazwa); $query = "WYBIERZ numer_telefonu OD użytkowników WHERE nazwa = "$nazwa""; $wynik = mysql_query($zapytanie);
Tylko jedna linijka kodu, a teraz nikt nie może już „zhakować” naszej bazy danych. Zobaczmy jeszcze raz, jak będą wyglądać zapytania SQL, w zależności od danych wprowadzonych przez użytkownika:
Aleks
WYBIERZ numer_telefonu OD użytkowników GDZIE imię = „Alex”
Mc Donalds
WYBIERZ numer_telefonu OD użytkowników GDZIE nazwa = „Mc\Donalds”
Joe"; Użytkownicy DROP TABLE; --
WYBIERZ numer_telefonu OD użytkowników GDZIE imię = "Joe"; Użytkownicy DROP TABLE; --"
mysql_real_escape_string bezkrytycznie umieszcza ukośnik przed wszystkim, co może mieć jakieś specjalne znaczenie.


Stosujemy funkcję htmlspecialchars do wszystkich danych użytkownika przed ich wyświetleniem. Teraz wiadomość szkodnika wygląda następująco:

Wysłane przez JackTR 18 lipca o 12:56


Należy pamiętać, że wartości otrzymane od użytkowników w rzeczywistości nie są „uszkodzone”. Każda przeglądarka przeanalizuje to jako HTML i wyświetli wszystko na ekranie w prawidłowej formie.

Co prowadzi nas z powrotem do... Wszystko powyższe pokazuje problem wspólny dla wielu systemów: tekst w tekście musi zostać zmieniony, jeśli nie powinien zawierać znaków specjalnych. Umieszczając wartości tekstowe w SQL, należy je zmienić zgodnie z regułami SQL. Umieszczając wartości tekstowe w formacie HTML, należy je zmienić zgodnie z regułami HTML. Umieszczając wartości tekstowe w (nazwa technologii), należy je zmienić zgodnie z zasadami (nazwa technologii). To wszystko. Istnieją oczywiście inne sposoby radzenia sobie z danymi wprowadzanymi przez użytkownika, które mogą zawierać znaki specjalne lub nie:
  • Walidacja
    Możesz sprawdzić, czy dane wprowadzone przez użytkownika odpowiadają określonej specyfikacji. Jeżeli konieczne jest wprowadzenie numeru, a użytkownik wprowadzi coś innego, program powinien o tym poinformować użytkownika i anulować wprowadzanie. Jeśli to wszystko zostanie poprawnie zorganizowane, nie ma ryzyka wyłapania „użytkowników DROP TABLE” tam, gdzie użytkownik miał wpisać „42”. Nie jest to zbyt praktyczne, aby uniknąć zastrzyków HTML/SQL, ponieważ ... Często musisz zaakceptować tekst w dowolnym formacie, który może zawierać sztuczki. Zazwyczaj walidację stosuje się jako dodatek do innych środków.
  • Sanityzacja
    Możesz także „po cichu” usunąć wszelkie symbole, które uważasz za niebezpieczne. Na przykład po prostu usuń wszystko, co wygląda jak tag HTML, aby uniknąć dodania do forum. Problem w tym, że można usunąć całkowicie legalne fragmenty tekstu.
    Przygotowane instrukcje SQL
    Istnieją specjalne funkcje, które robią to, czego chcieliśmy: sprawiają, że baza danych rozumie różnice pomiędzy samym zapytaniem SQL a informacjami dostarczonymi przez użytkowników. W PHP wyglądają mniej więcej tak:
    $stmt = $pdo->prepare("WYBIERZ numer_telefonu OD użytkowników GDZIE nazwa =?"); $stmt->execute($_POST["nazwa"]);
    W tym przypadku wysyłanie odbywa się dwuetapowo, wyraźnie rozróżniając żądanie i zmienne. Baza danych ma możliwość najpierw zrozumieć strukturę żądania, a następnie wypełnić je wartościami.

  • W prawdziwym świecie wszystkie te elementy są używane razem w celu zapewnienia różnych poziomów ochrony. Zawsze należy stosować weryfikację, aby mieć pewność, że użytkownik wprowadza prawidłowe dane. Następnie możesz (ale nie musisz) zeskanować wprowadzone dane. Jeśli użytkownik wyraźnie próbuje sprzedać Ci jakiś skrypt, możesz go po prostu usunąć. Następnie powinieneś zawsze, zawsze uciekać od danych użytkownika przed umieszczeniem ich w zapytaniu SQL (to samo dotyczy HTML).

2007.11.08 16:07

Napotkałem problem z automatycznym dodawaniem cudzysłowów w PHP podczas wprowadzania informacji do bazy danych.

Po przeszukaniu Internetu odkryłem, że problem można rozwiązać, zmieniając ustawienia serwera za pomocą dyrektyw w .htaccess: magic_quotes_gpc i magic_quotes_runtime.

Mówią (a ja nawet w to wierzę), że twórcy języka PHP nie mogąc zmusić większości programistów PHP do pisania kodu wysokiej jakości, postanowili zadbać o bezpieczeństwo naszego DBMS i wprowadzili automatyczne dodawanie ukośników przed znakami specjalnymi. Ukośniki dodawane są w oparciu o dyrektywy php.ini (magic_quotes_gpc i magic_quotes_runtime).

Dyrektywy są zbiorczo nazywane „magicznymi cytatami”, ale ja nazywam je „piekielnymi cytatami”. Rzeczywiście, w dobrze napisanej aplikacji nie ma potrzeby automatycznego wyceny; ponadto przeszkadzają dodatkowe cytaty i należy je usunąć.

Pierwsza dyrektywa - magic_quotes_gpc - oznacza, że ​​PHP automatycznie dodaje ukośniki do danych przychodzących od użytkownika - z żądań POST, GET i plików cookie. Druga zmienna – magic_quotes_runtime – oznacza, że ​​do danych otrzymanych podczas wykonywania skryptu – np. z pliku lub bazy danych – dodawane są ukośniki. Dlatego niektóre funkcje prezentujące takie informacje wykonują cudzysłowy.

Jeśli chcesz odmówić tak natrętnej usługi, to albo (w tej rzadkiej i szczęśliwej sytuacji, gdy jesteś pełnym właścicielem serwera) wyłącz te zmienne konfiguracyjne w pliku php.ini, albo (chyba że oczywiście jesteś hostując witrynę na darmowym hostingu) możesz dokonać zmian w pliku .htaccess. Jest to plik zawierający lokalne – dla jednego katalogu, a nie całego serwera – ustawienia Apache. I dodaj do niego następujące linie.


Przyjaciele!
Jesteśmy w trakcie wielkiego sprzątania!
Możliwe błędy i zakrzywienia stron
Nie da się szybko obejrzeć wszystkiego!
Jeśli znajdziesz jakiś błąd, to jeśli nie sprawi Ci to trudności, wpisz adres...
Teraz jesteś tutaj:

http://site/page/php/039_php_kavyichki.html

Cytaty PHP, cudzysłowy pojedyncze, cudzysłowy podwójne, ucieczka

Dzisiaj zajmiemy się cudzysłowami, ale nie prostymi, ale cytatami w PHP i dodatkowo cudzysłowami uciekającymi, opcjami.

Zacznijmy od tego, że PHP pozwala na użycie zarówno cudzysłowów podwójnych, jak i pojedynczych.

Istnieje kilka opcji ucieczki przed cytatami.

Gdzie znajdują się cudzysłowy na klawiaturze?

Jeśli zamierzasz pracować z kodem, musisz wiedzieć, gdzie znajdują się cudzysłowy na klawiaturze w układzie łacińskim - to jest

litera E – mała litera:

i litera e jest przeliterowana - są to pojedyncze cudzysłowy:

symbol podwójnego i pojedynczego cudzysłowu php

Naturalnie potrzebny będzie znak cudzysłowu, tj. Jeśli chcesz wydrukować cytat bez jego uruchamiania, właśnie do tego służą znaki cytatu.

Znak podwójnego cudzysłowu:

"

Znak pojedynczego cudzysłowu:

„ Uciekające cudzysłowy PHP.

Co właściwie masz na myśli, mówiąc o ucieczce przed cudzysłowami w PHP.

Spójrzmy na przykład, bo dzięki przykładom zawsze łatwiej jest zrozumieć, o czym mówimy!

Napiszmy kod php:

echo "cytaty php";

Ale jeśli wkleimy tutaj ten kod, to obawiam się, że nigdy nie zobaczysz tych linii!?

Dlaczego? Tak, po prostu dlatego, że kod nie będzie działać.

Zrobiłem to specjalnie dla Ciebie, z wstawionym tym kodem, a jeśli chcesz, możesz zobaczyć, co z tego wyniknie!

Dlaczego się to stało?

Ponieważ wewnątrz echo znajdują się dodatkowe cudzysłowy, które są postrzegane jako kod PHP i jeśli jest ich więcej niż oczekiwano, pojawia się błąd!

Co zrobić w tej sytuacji!?

Musisz zastąpić podwójne cudzysłowy pojedynczymi cudzysłowami.

Weźmy ten sam kod i zmieńmy cudzysłowy na pojedyncze.

echo '"cytaty PHP"';

Zobaczmy, co mamy!

Te. Wzięliśmy górny kod i wkleiliśmy go bezpośrednio na tę stronę i oto wynik:


2. Druga opcja ucieczki cudzysłowów. Są sytuacje, w których użycie pojedynczych cudzysłowów jest niemożliwe!

W tym przypadku używany jest lewy ukośnik. Przed każdym elementem, który wymaga ucieczki, należy wstawić taki ukośnik.

Weźmy poprzedni wpis i zróbmy to samo, tylko używając ukośnika:

Echo " cytaty z php";

Zobaczmy wynik:

Jak usunąć cytaty.

Aby wyświetlić cytaty na ekranie i aby nie były to kody PHP - niezależnie od tego, jak dziwnie to może zabrzmieć! Cytaty należy zmienić na jednostki HTML, na przykład:

Pojedynczy cytat za pomocą kodu HTML::

" - pojedynczy cudzysłów " " "

Podwójny cytat za pomocą kodu HTML:

" - cudzysłów " " "

Taki cytat będzie wyglądał jak cytat na ekranie, ale nie będzie już pojawiał się w kodzie PHP...

I dalej!

Cały kod PHP należy traktować ostrożnie! Jeśli np. napisałeś coś w Wordzie, jakiś tekst, to zacząłeś pisać w nim kod, tak jak mi się to zdarzyło za pierwszym razem.

I nie mogłem zrozumieć, na czym polegał problem - naprawdę nie chciał mi pokazać prostego kodu. Już byłem gotowy rozbić komputer młotem!!!

Okazało się jednak, że cytaty w edytorze kodu różnią się od Worda. I nie da się tego zrozumieć, jeśli się przez to nie przeszło!

Ukośnik, od angielskiego ukośnika, to ukośnik odwrotny, który w niewytłumaczalny sposób nagle pojawia się w Twoich danych. Jest dodawany do niektórych znaków specjalnych, ale służy głównie do umieszczania cudzysłowów. Ukośnik jest potrzebny tylko podczas pracy z bazą danych. I jest to absolutnie konieczne. We wszystkich innych przypadkach tylko przeszkadza. Teraz przyjrzymy się obu przypadkom i nauczymy się pisać programy niezależne od ustawień PHP.


Dyrektywy php.ini odpowiadają za automatyczne dodawanie ukośników



magic_quotes_gpc
magic_quotes_runtime



Pierwsza – jeśli jest włączona – automatycznie dodaje ukośniki do danych pochodzących od użytkownika – z żądań POST, GET oraz plików cookies. Drugi pochodzi z tych otrzymanych podczas wykonywania skryptu - na przykład z pliku. Ale nie zawsze jest dostęp do ustawień PHP, zwłaszcza jeśli program jest napisany do dystrybucji.


Dla własnego bezpieczeństwa przeczytaj CAŁY tekst, niezależnie od Twojej sprawy.


1. Jeśli pracujesz BEZ bazy danych
Oznacza to, że nie musisz automatycznie dodawać ukośników. Jeśli dodano PHP, musisz się go pozbyć.


Możesz sprawdzić, czy PHP został dodany, korzystając z funkcji get_magic_quotes_gpc().
Funkcja stripslashes() usuwa ukośniki.
Teraz pozostaje nam tylko sprawdzić, a jeśli dodano PHP, to przejrzeć wszystkie zmienne w skrypcie i usunąć ukośniki. Można to zrobić za pomocą jednej funkcji, wykorzystując tablicę $GLOBALS, która zawiera wszystkie zmienne obecne w skrypcie:



if (get_magic_quotes_gpc()) paski($GLOBALS);


paski funkcyjne(&$el) (
if (is_array($el)) (
foreach($el jako $k=>$v) (
if($k!="GLOBALNE") (
paski($el[$k]);
}
}
) w przeciwnym razie (
$el = paski ukośników($el);
}
}



Ukośniki zostaną usunięte zarówno z tablic globalnych, jak i ze wszystkich zmiennych utworzonych, gdy Register_globals=on.


W tym miejscu musimy zrobić małą dygresję. Iterowanie po tablicy $GLOBALS jest wymagane tylko jeśli masz włączoną funkcję rejestru_globals i używasz zmiennych, które są automatycznie przypisywane do wartości przekazywanych do skryptu. Jeśli ich nie używasz, po prostu usuń ukośniki z wymaganych tablic -
$_POST, $_GET i tak dalej.


Aby pozbyć się dodawania ukośników przy pobieraniu danych z pliku, po prostu napisz na początku skryptu:



set_magic_quotes_runtime(0);



2. Jeśli pracujesz z MySQL
Dwie podstawowe zasady pisania zapytań w mysql:


  • We wszystkich zmiennych znaki specjalne muszą być poprzedzone ukośnikami.
    Ważna uwaga. Dodane ukośniki NIE trafiają do bazy danych. Są one potrzebne jedynie w żądaniu.
    Po uderzeniu w bazę, cięcia są odrzucane. W związku z tym powszechne
    Błędem jest używanie ukośników podczas pobierania danych z bazy danych.

  • Wszystkie zmienne łańcuchowe muszą być ujęte w cudzysłowy (pojedyncze lub podwójne, ale pojedyncze są wygodniejsze i częściej używane). Dla uproszczenia możesz także ująć zmienne numeryczne w cudzysłów - mysql sam konwertuje je do żądanej postaci. Oznacza to, że dla wiarygodności wszelkie dane wprowadzone do wniosku muszą być ujęte w cudzysłów. Samo wykonanie addlashes() byłoby błędne. Co jeśli sam PHP został już dodany? To należy sprawdzić. Służy do tego funkcja get_magic_quotes_gpc().
    Jeżeli dane pochodziły z przeglądarki użytkownika metodą GET lub POST, to należy je zapisać w następujący sposób:

    if (!get_magic_quotes_gpc()) $var=addslashes($var);



    Jeśli dane są pobierane z pliku (co zdarza się rzadko, ale jednak), to

    if (!get_magic_quotes_runtime()) $var=addslashes($var);



    Ale co ciekawe. Specjalnie dla mysql, najnowsze wersje PHP wprowadziły funkcję mysql_escape_string(), która powoduje ucieczkę o jeden znak więcej niż dodaje ukośniki. Chyba warto z tego skorzystać.
    Jeśli masz specjalną funkcję do tworzenia zapytań, możesz wstawić do niej ucieczkę. Jeśli nie, możesz skorzystać z tej funkcji:

funkcja dodaje(&$el,$poziom=0) (
if (is_array($el)) (
foreach($el jako $k=>$v) add($el[$k],$poziom+1);
) w przeciwnym razie (
$el = dodaje ukośniki($el);
if (!$poziom) zwróć $el;
}
}

Ta funkcja ma dwa zastosowania.
Jeśli jako parametr podasz ciąg znaków, funkcja zwróci go ze znakami specjalnymi ze zmianą znaczenia.
Wygodne do wstawienia do żądania, np



"WYBIERZ * Z tabeli GDZIE nazwa="".adds($nazwa).""";



Jeżeli parametrem jest tablica, to funkcja nic nie zwróci, a po prostu „przejdzie” rekurencyjnie wszystkie jej elementy. Na przykład dodaje($_POST); wykona normalną pracę magic_quotes dla tej tablicy.


Należy pamiętać, że żadna z funkcji dodających ukośniki nie dodaje ich do metaznaków wyszukiwania „%” i „_” używanych w operatorze LIKE. Dlatego jeśli używasz tego operatora, dodaj ukośniki ręcznie.



$data=preg_replace("/(%|_)/","\\\\\1",$data);




Reguły ucieczki mogą się różnić w przypadku innych systemów DBMS.


Notatka:.
Podczas wyświetlania wartości w znacznikach wejściowych formularzy, ukośniki nie pomagają. Aby wyświetlił się cały tekst w takim polu, wartość należy ująć w cudzysłów, a do danych wyjściowych zastosować funkcję htmlspecialchars.
Przykład:



Wynik:

W pierwszej wersji (z podwójnym cudzysłowem) zastosowaliśmy ucieczkę znaku specjalnego dolara, przez co znak ten przestał mieć swoje specjalne przeznaczenie (oznaczenie zmiennej) i zamienił się w zwykły znak dolara.

W drugiej opcji (z pojedynczymi cudzysłowami), jak już wiesz, interpreter PHP nawet nie próbował znaleźć zmiennych w linii, dlatego ucieczka nie była konieczna.

Znaki specjalne w PHP

Specjalnie dla czytelników bloga. Strona na! Przygotowałem małą listę znaków specjalnych w języku programowania PHP:

  • \n nowa linia
  • \r powrót karetki
  • \t pozioma zakładka
  • \\ ukośnik odwrotny (ukośnik odwrotny)
  • \$znak dolara
  • \" cudzysłów

Przyjrzyjmy się działaniu znaków specjalnych na przykładzie \n - znaku specjalnego tworzącego nową linię (jak Enter), ale przeglądarki go nie (i nie powinny) rozumieć i ignorować, ale wynik jego działania może można zobaczyć w kodzie źródłowym strony:

Wynik:

Kod źródłowy (Ctrl + U):

Jeśli znak specjalny \n nie jest w żaden sposób wyświetlany odwiedzającym w przeglądarce, jakie jest jego znaczenie?

Po pierwsze, używając znaków specjalnych, a w szczególności \n, możesz wygodnie sformatować kod na stronie (jak w powyższym przykładzie).

Po drugie, \n można zastosować np. podczas operacji zapisu do pliku, aby dokonać zawinięcia (Enter) i kontynuować pisanie w nowej linii.

Alternatywą dla tego formatowania jest .

Składnia Heredoc w PHP

Wynik:

Kod źródłowy (Ctrl + U):

Wynik mówi sam za siebie, teraz zastanówmy się, jak wszystko działa:

  • Wiersz zaczyna się od trzech nawiasów ostrokątnych
Kontynuując temat:
Okna

Najprawdopodobniej szukasz nowego, świeższego wyglądu swojej witryny. Jeśli tak, to mam dla Ciebie świetną wiadomość. W tej kolekcji znajdziesz...