
HTML til PHP: echo, heredoc, nowdoc og å gå ut av PHP
Lim inn ferdig markering, så får du fem måter å legge den inn i en PHP-fil på, hver med riktig escaping. Alt kjører i nettleseren din: markeringen sendes ingen steder og lagres ingen steder.
.html her — filen leses lokalt.
Det som ligger nærmest det codebeautify gir, men med escaping: uten den bryter enhver apostrof i markeringen PHP-strengen.
Lim inn HTML over — PHP-koden vises her.
Lim inn HTML over — PHP-koden vises her.
Lim inn HTML over — PHP-koden vises her.
Lim inn HTML over — PHP-koden vises her.
Lim inn HTML over — PHP-koden vises her.
Markeringen forlater ikke nettleseren din — konverteringen skjer lokalt, uten at noe sendes til en server.
Fem måter og når hver av dem passer
echo linje for linje — linje etter linje, hver i sitt eget kall. Det mest kjente uttrykket, praktisk når en betingelse eller en løkke skal inn mellom linjene. nowdoc — en blokk der PHP ikke tolker noe som helst: verken escape-sekvenser eller variabler. Markeringen havner i koden byte for byte og trenger ingen escaping i det hele tatt. Dette er den tryggeste måten å flytte andres HTML på. heredoc — samme blokk, men med variabler: $title der inne blir erstattet. Derfor escapes dollartegnet og omvendt skråstrek, mens anførselstegnene ikke gjør det. Streng i en variabel — markeringen samles i $html ved sammenkjeding. Trengs når den skal returneres fra en funksjon eller sendes til en malmotor i stedet for å skrives ut med en gang. Gå ut av PHP — lukk taggen og gi fra deg markeringen som den er. Det er nettopp dette PHP-dokumentasjonen anbefaler: ingen escaping, ingen kostnad ved å lime sammen strenger, og syntaksfargingen i redigeringsprogrammet fortsetter å virke. Den lukkende taggen ?> mangler bevisst i den genererte koden. Ethvert tegn etter den — selv et tilfeldig linjeskift på slutten av filen — havner i utdataen og gir det klassiske «headers already sent».
Hvorfor konvertere uten escaping gir kode som ikke virker
Den mest utbredte konverteren fra HTML til PHP gjør nøyaktig én ting: den klipper teksten i linjer og limer sammen echo '<linje>';. Noen tegnerstatning finnes ikke der i det hele tatt, og det viser seg allerede på det første virkelige stykket markering. Et attributt i enkle anførselstegn — <a href='/price'> — lukker PHP-strengen midt i teksten. Deretter følger en syntaksfeil. En omvendt skråstrek på slutten av linjen sluker det avsluttende anførselstegnet og limer to linjer til én. Et dollartegn i doble anførselstegn eller i en heredoc gjør $total til en tom verdi. trim() på hver linje klipper i stillhet bort innrykket inne i pre, textarea og code — det den besøkende ser på siden, endres. Alle linjene limes sammen uten skift, så den resulterende HTML-en blir én eneste endeløs linje. Her er hvert av disse tilfellene håndtert, og heredoc-etiketten velges slik at den ikke faller sammen med noen linje i markeringen din: ellers ville blokken lukket seg midtveis.
