Strängar är en av de grundläggande skalära typerna i många programmeringsspråk, inklusive PHP. De representerar textdata, från enskilda tecken till hela dokument.
Den enklaste strängprogrammeringen involverar enkelbytetext, som kan representera 256 olika tecken. ASCII är den vanligaste kodningen. Det grundläggande PHP-språket har många användbara funktioner för att manipulera sådana strängar.
Hur man visar innehållet i en sträng
Om du har gjort någon programmering i PHP har du förmodligen stött på eko, men du kanske inte inser att det faktiskt inte är en funktion alls. Faktum är att echo är en språkkonstruktion, så även om du använder den mer än någon riktig strängfunktion kan du inte alltid använda den i stället för en funktion.
Du kommer nästan alltid att använda det så här:
echo "Hello, world";
Men du kan faktiskt kalla det som en funktion:
echo("Hello, world");
Även om det ser ut som det, är detta fortfarande inte ett funktionsanrop. Du kan till exempel inte tilldela dess returvärde till en variabel:
$a = echo("Hello, world");
Parse error: syntax error, unexpected 'echo' (T_ECHO)
Ett annat sätt att mata ut en strängs värde är att använda print. Återigen, detta är inte riktigt en riktig funktion, även om det är närmare ett än eko. Som echo kan du kalla det utan parentes:
print "Hello, world";
Men till skillnad från echo returnerar det ett värde som du kan tilldela, även om det värdet alltid är 1:
$a = print("Hello, world");
echo $a; // 1
1. Mata ut en sträng med en riktig funktion
De printf funktion är faktiskt en riktig funktion. Tycka om eko och skriva ut, den matar ut strängar, men den har något unikt beteende som speglar samma funktion från c-språket:
$username = "John";
$length = printf("Hello, %s", $username); // "Hello, John"
echo $length; // 11
Det första argumentet är fortfarande en sträng, omsluten av dubbla citattecken. Men printf kommer att utföra olika ersättningar på speciella teckensekvenser inuti strängen. Dessa sekvenser börjar med en procentsymbol, som den ovan, %s. I det här specifika fallet står %s för en sträng och printf ersätter den med nästa argument, vilket är värdet på $användarnamn.
De printf funktion returnerar ett användbart värde, längden på den formaterade strängen. Detta kan vara användbart för kod som inte kan veta längden i förväg när variabler skickas till printf, till exempel. Du kan använda det returvärdet för att bestämma hur mycket fysiskt utrymme strängen kommer att uppta på en kommandorad.
2. Få längden på en sträng
På tal om stränglängd är standardsättet för att bestämma längden på en sträng strlen fungera. Den här funktionen är väldigt enkel: den tar ett enda strängargument och returnerar antalet byte som ett heltal. Som nämnts tidigare, för ASCII-text är antalet byte detsamma som antalet tecken:
$length = strlen("Hello, World");
echo $length; // 12
En mycket vanlig uppgift när man har att göra med strängar är att extrahera en del av den strängen. Det finns flera sätt att göra detta, och det första som presenteras här specificerar positionen och längden på den nödvändiga delsträngen. De substr funktion extraherar en fast del av en sträng enligt dessa parametrar.
$greeting = substr("Hello, World", 0, 5);
echo $greeting; // "Hello"
Observera att, som i de flesta programmeringsspråk, räknar PHP strängförskjutningar från 0. PHP skiljer sig från vissa språk genom att den här funktionens andra parameter är längden på den resulterande strängen.
En annan skillnad är att PHP stöder negativa värden för både offset och längd. Om offset är negativ, kommer resultatet att börja räknas från slutet av strängen, inte början:
$greeting = substr("Hello, World", -5, 5);
echo $greeting; // "World"
Om längden är negativ kommer den att hänvisa till antalet borttagna tecken, snarare än siffran som ingår:
$greeting = substr("Hello, World", 0, -6);
echo $greeting; // "Hello,"
4. Söka inom en sträng
En viktig del av textbehandling handlar om att hitta platsen för en sträng i en annan. I PHP kan du uppnå detta med strpos fungera:
$pos = strpos("Hello, World", ",");
echo $pos; // 5
Du kan använda strpos i samband med substr för att tillhandahålla en mer generell metod för att extrahera en del av en sträng:
$string = "Hello, World";
$pos = strpos($string, ",");
$first_part = substr($string, 0, $pos);
echo $first_part; // "Hello"
5. Konvertera fallet på en sträng
Traditionella ASCII-strängar har väldefinierade varianter av versaler och gemener. Versalversionen av a är A. Den gemena versionen av Z är z. De strtoupper och strtolower funktioner utför dessa omvandlingar. De gör det för varje tecken i en ASCII-sträng:
$original = "hello, WORLD";
$upper = strtoupper($original);
$lower = strtolower($original);
echo "$lower $upper"; // "hello, world HELLO, WORLD"
6. Eliminera blanksteg
Ibland kommer du att sluta med en sträng som har inledande eller efterföljande blanksteg: mellanslag, tabbar eller nyradstecken. Detta är ofta oönskat, men trim kan ta bort det:
$trimmed = trim(" Hello, World ");
echo $trimmed; // "Hello, World"
7. Bryt upp en sträng med en separator
De explodera funktionen låter farligt men oroa dig inte, den orsakar ingen bestående skada! Istället konverterar den en sträng till en rad strängar, åtskilda av en annan sträng – ofta ett tecken. Det kan vara användbart om du till exempel vill dela upp en mening i separata ord.
$sentence = "The quick brown fox jumps over the lazy dog";
$words = explode(" ", $sentence);
De $ord variabel är nu en array som innehåller enskilda ord:
[ "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog" ]
8. Dela upp en sträng till delsträngar med fast längd
Tycka om explodera, den str_split funktion bryter upp en sträng i en array av mindre strängar. Till skillnad från explodera bestäms de slutliga strängarna inte av deras innehåll, utan av deras längd.
$parts = str_split("Hello, World", 6);
De $delar arrayen innehåller nu två delsträngar, var och en sex tecken långa:
[ "Hello,", " World" ]
9. Sök och ersätt inom en sträng
Du kan utföra en enkel sökning och ersätta operation på en sträng med str_ersätt. Det krävs tre argument: en sträng att söka efter, en ersättningssträng och en originalsträng för att söka. Funktionen returnerar den nya strängen:
$result = str_replace("o", "OO", "Hello, World");
echo $result; // "HellOO, WOOrld"
PHP ger många användbara sätt att arbeta med text
Eftersom PHP ofta används i webbutveckling är det en vanlig uppgift att hantera text.
Funktionerna som presenteras här är bland de mest användbara för att bearbeta text med PHP. Det finns ett hundratal stränghanteringsfunktioner inbyggda i själva språket.
Kom ihåg att funktionerna som visas här är för användning med ASCII-strängar, inte Unicode. PHP har också stöd för Unicode och andra teckenkodningsscheman med flera byte, med en separat uppsättning funktioner.
Om författaren
Bobby Jack (65 artiklar publicerade)
Bobby är en teknikentusiast som arbetat som mjukvaruutvecklare under de flesta av två decennier. Han brinner för spel, arbetar som chefredaktör på Switch Player Magazine och är fördjupad i alla aspekter av onlinepublicering och webbutveckling.
Mer från Bobby Jack
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera
