Strenge - PHP

Lær at arbejde med strenge med strtoupper(), strtolower(), str_replace() og strlen() og multibyte funktioner

Introduktion

Her på siden kan du læse om strenge som ofte består af tekst men som også kan indeholde tal som en streng.

Strenge 1

Strenge 2

Der findes én operator til brug ved strenge.
Det er punktum (.) som bruges til at sætte flere strenge sammen.
Cocio fås på 40 cl glas flaske
Resultatet ovenfor er skabt af følgende kode

Strenge 3

Her ses flere måder at tildele variabler den sammen tekst.

Med punktum (.) operatoren kan vi tilføje mere tekst til en variabel som allerede indeholder noget tekst.
Der sidder fire mand på en tømmerflåde
Der sidder fire mand på en tømmerflåde
Der sidder fire mand på en tømmerflåde
Resultatet ovenfor er skabt af følgende kode

Strenge 4

Funktionen strtoupper() laver alle bogstaver store.
Funktionen strtolower() laver alle bogstaver små.
OLE er 64 år og bor i svendborg
Resultatet ovenfor er skabt af følgende kode

Desværre virker strtoupper() og strtolower() ikke på tegn som æ, ø og å hvis du har gemt din fil med UTF encoding som kan bruge mere end 1 byte per tegn.

Derfor kan du få uventet resultater ved æ, ø og å som her hvis altså du har gemt din fil med for eksempel UTF-8 encoding.
rØde Æbler
øLLEBRøD
Resultatet ovenfor er skabt af følgende kode


Læs Multibyte funktioner for en løsning.

Strenge 6

Vi kan også tilgå hvert enkelt tegn i en streng.
PHP
PoP Cookbook
Resultatet ovenfor er skabt af følgende kode

Strenge 7

Selvom en variabel er blevet tildelt et tal som en streng så kan PHP godt finde ud af at det er er et tal alligevel.
237
35

247
45
Resultatet ovenfor er skabt af følgende kode

Strenge 8

Med is_string() og is_int() kan man teste om en variabel indeholder en streng eller et tal.
237 er en streng
35 er et tal
Resultatet ovenfor er skabt af følgende kode

str_replace 1

Med funktionen str_replace() kan man erstatte en bestemt tekst med noget andet.
Der var engang en stor giraf, der gik og gik og gik
Resultatet ovenfor er skabt af følgende kode

str_replace 1b

Der er forskel på linjeskift i forskellige computer systemer.
Windows, Unix, ældre Macintosh bruger henholdsvis \r\n, \n, \r.


Nogle indbyggede PHP funktioner bruger desuden \n som linjeskift selvom man er på et Windows system.
Her kan det være nødvendigt at bruge str_replace() for at få det ønskede linjeskift.
første
anden
tredie
Resultatet ovenfor er skabt af følgende kode

str_replace 2

Flodeskum med rodvind og jordbergrod i sprengt kongeal
Resultatet ovenfor er skabt af følgende kode

str_replace 3

I Åbenrå sælger de stegt flæsk med persille sovs ja de gør
Resultatet ovenfor er skabt af følgende kode

Implode 1

Med implode() kan man sammensætte værdier fra et array til en streng og samtidig putte noget imellem hver værdi.
<meta name="keywords" content="PHP, netkoder, introduktion, hvad er PHP, tekstredigering, Notepad++, HTTP server, Apache">
Resultatet ovenfor er skabt af følgende kode

Explode 1

Med explode() kan man lave en streng til et array hvor hver værdi i strengen adskilles et bestemt sted.
For eksempel kan man adskille hver værdi ved et mellemrum eller et komma.
1 : rød
2 : grøn
3 : blå
4 : orange
Resultatet ovenfor er skabt af følgende kode

Multibyte funktioner

De fleste streng funktioner i PHP opfatter 1 byte som værende 1 tegn.

Det er ikke noget problem hvis man gemme sine PHP filer i en encoding som altid bruger 1 byte til 1 tegn såsom ISO-8859-1.

Men hvis man gemmer sine filer i UTF-8 (som jeg gør) så kan det give nogen uventede resultater fordi i UTF-8 fylder tegn som æ, ø og å nemlig 2 byte hver.

Det kan demonstreres med følgende kode.
1
2
3
6
Resultatet ovenfor er skabt af følgende kode


De indbyggede streng funktioner i PHP som strtoupper() og strlen() er kun designet til strenge hvor 1 byte er 1 tegn.
De dur altså ikke til multibyte tegn.

Når man køre PHP installationsprogrammet kan man tilvælge den extension som hedder Multi-Byte String så tilføjes multibyte bevidste funktioner som mb_strtoupper() og mb_strlen() og dem kan man bruge i stedet.

Så virker det også med tegn som æ, ø og å som her.
1
1
3
3
Resultatet ovenfor er skabt af følgende kode



Hvis man vil undersøge om man har Multi-Byte String extension installeret så kan man køre følgende kode og kigge efter mbstring.


Her kan du se hvilke forskellige resultater det kan give når man har gemt sin fil med UTF-8 encoding (som jeg har).

Der er dog ikke nogen ucfirst() til multibyte strenge man så kan man lave sin egen funktion som her med mb_ucfirst().
rødgrød med flØde og Æbleskiver
rødgrød med fløde og æbleskiver

RøDGRøD MED FLØDE OG ÆBLESKIVER
RØDGRØD MED FLØDE OG ÆBLESKIVER

strlen() siger at der er 35 tegn i $tekst variablen.
mb_strlen() siger at der er 31 tegn i $tekst variablen.
Resultatet ovenfor er skabt af følgende kode


Se også mb_internal_encoding() og mb_http_output() som kan påvirke resultatet.

Der er desværre ikke nogen tilsvarende multibyte funktioner til ucfirst() og ucwords().

Altså der er ikke nogen mb_ucfirst() og mb_ucwords().

Men man kan selv lave funktionerne som her.
Skal det starte med stort?
Ja
Virker specielle tegn også ?
Det skulle jeg mene...
€ eurotegnet (€)
→ pil (→)
Resultatet ovenfor er skabt af følgende kode


Her kan du se indbyggede streng funktioner (og de multibyte bevidste streng funktioner som starter med mb_).

Skriv din kommentar

Spørg mig om hvad som helst
Du kan også skrive direkte til mig på
Stem
Søg
Language

Select English to navigate the website in English. Things like the navigation menu and contact form will be in English, but the main content on each page will not be translated.