Trim sidste tegn i php-strengen. Trimning af en PHP-streng: enkle måder

Webstedet forudsætter passende ændringer på dets sider afhængigt af den enhed, den besøgende bruger. Hvis med hensyn til blok- og inline-elementer næsten alt kan "automatiseres" ved hjælp af CSS og JavaScript, så er det, når man genererer indhold og bruger databaser, svært at undvære serversiden.

Vi afkorter normalt en linje i PHP, når et HTML-layoutelement har en begrænsning på antallet af tegn, der er synlige, men dette er en privat opgave.

Traditionel løsning

En af de mest populære og hyppigt brugte funktioner er substr(). To eller tre parametre overføres til det:

  • kildestreng;
  • startposition ($iPos);
  • længden af ​​den delstreng, der skal klippes ($iLen).

Den sidste parameter kan udelades. Hvis kun to parametre er angivet: resultatet af substr() vil være en understreng, fra startpositionen ($iPos) til slutningen af ​​den originale streng. Hvis tre parametre blev bestået, trimmer vi PHP-strengen fra startpositionen ($iPos) til den angivne længde ($iLen).

Det er kun muligt at vælge begyndelsen af ​​en streng ved hjælp af denne funktion, når den første parameter er nul. Hvis startpositionen er negativ, vil PHP betragte tegnet i position $iPos fra slutningen af ​​strengen som begyndelsen, hvorfra vi trunkerer strengen. Tegn på en linje er nummereret fra nul.

Særlig funktion

PHP betragter opgaven med at "klippe en snor" (i bred forstand) i kontekst: fra begge sider. Historisk set er dette trim()-funktionen, som har til formål at fjerne ubetydelige tegn:

  • mellemrum;
  • linjeskift;
  • vogn retur;
  • tabulering;
  • nul-tegn

fra begge ender af linjen. Dette er en meget populær funktion, især når man arbejder med databaser, hvor udvalget ofte indeholder mange mellemrum. Brug af funktionen explode() resulterer også ofte i ekstra tegn i begyndelsen og slutningen af ​​strengen.

Det er dog ikke alle udviklere, der bruger trim()-funktionen til sit fulde potentiale. Til opgaven "truncate a string" foreslår PHP at bruge den anden parameter i funktionen, hvor du kan angive ethvert sæt af tegn, der skal elimineres fra kildestrengen.

Det er vigtigt, at tegn kun fjernes fra begyndelsen og slutningen af ​​kildestrengen. Det er vigtigt, at ved at manipulere maskerne af de tegn, der skal slettes, og rækkefølgen af ​​underopgaver.

  • Først klippede vi PHP-strengen af ​​én maske ad gangen.
  • Så en til.
  • Så på den tredje.

Som et resultat af en række muligheder for at bruge én funktion, afskærer vi teksten i PHP efter behov for at løse opgaven.

Ikke-standardiserede metoder

Hvis vi ikke overvejer hele rækken af ​​linjefunktioner i sproget, så giver et par funktioner explode()/implode() og str_replace()-funktionen dig mulighed for at løse ikke-standardiserede problemer med at "skære" linjeinformation.

Resultatet af en MySQL-forespørgsel er altid formelt i strukturen af ​​de returnerede oplysninger, og indholdet af felterne (elementerne) i resultatet bestemmes altid af kilden, det vil sige udvikleren, der har designet databasen.

Dette er et særligt eksempel, men det besvarer nøjagtigt spørgsmålet: hvordan afkortes en linje i PHP, når der er mange linjer. Trm()-funktionen er en bestemt, og dens historie blev bestemt af opgaver, når der ikke var meget information, og der ikke var behov for at afskære andet end ubetydelige tegn.

I dag cirkulerer information i store mængder, og skæring linje for linje er ikke kun unødvendigt, men også irrationelt.

Opdeling i komponenter er også en mulighed, ligesom at klippe en snor af. PHP vil automatisk bruge explode() til at skære en stor tekst i mange nødvendige linjer. Ved at bruge funktionen str_replace() - det vil sige at erstatte en forekomst af tegn med en anden - kan du opnå en lignende effekt.

Dynamikken og mængden af ​​information, der skal behandles, er først og fremmest en passende løsning og ikke brugen af ​​én særlig funktion.

Fungere substr($string, $start, $length) , hvor $string er en variabel med tekst, $start er tegnet, hvorfra nedtællingen starter (0 tages som det første tegn), og $length er antallet af tegn i valgt tekst.

$text = "Eksempel og tekst";

$først = substr($tekst,0,6); // Viser 6 tegn startende fra 0., det allerførste
echo $først; // vil udsende "Eksempel".

$sekund = substr($tekst,8,3); // Viser 3 tegn fra den 8
ekko $sekund; // vil udskrive "og"
Hvis du ikke angiver parameteren Antal tegn (2. ciffer), vil funktionen vise alle resterende tegn

$text = "Eksempel og tekst";

$tredje = substr($tekst,8); // Viser ALLE tegn fra den 8
ekko $tredje; // vil udskrive "og tekst"

Trimning af russisk tekst ved hjælp af mb_substr PHP-funktionen

Fungere mb_substr udfører de samme opgaver som substr, men er også i stand til at håndtere multibyte-kodninger. Derfor, i tilfælde af russisk tekst, vil det være nyttigt for dig mb_substr. Virker det samme

$text = "Eksempel på tekst";

$first = mb_substr($text,0,6,"UTF-8"); // Viser 6 tegn startende fra 0., det allerførste
// Opmærksomhed! Angiv kodningen af ​​kildeteksten! I dette tilfælde utf-8
echo $først; // vil vise "Eksempel"

$second = mb_substr($tekst,7,6,"UTF-8"); // Viser 6 tegn fra den 7
ekko $sekund; // vil udskrive "tekst"
Bemærk venligst, at i tilfælde af kyrillisk (russisk tekst) er det bedre at angive kodningen i slutningen af ​​funktionen. Eksemplet bruger den mest populære mulighed - UTF-8

Trimning af teksten fra slutningen

Hvis du vil trimme teksten fra slutningen, vil vi for at gøre dette angive et negativt tal for variablen, der angiver fra hvilket tegn tekstvalget begynder

$text = "Sprite og Fanta";

$first = substr($tekst,-6,5); // Viser 5 tegn begyndende fra den 6. fra slutningen
echo $først; // vil vise "Fant"

Efter trimning tilføjer vi også tekst

Når du har trimmet variablen med tekst, skal du tilføje yderligere tekst til slutningen

$example = "Tekst tekst tekst tekst";

$eksempel = substr($eksempel,0,9); // Viser 9 tegn startende fra 0., det allerførste
$example .= "mere...";
echo $eksempel; // vil vise "Tekst tekst mere..."
Tværtimod kan du lave en optagelse i begyndelsen og derefter trimme teksten

$text = "Onkel";

$example = "George og Michael";
$eksempel = substr($eksempel,0,6); // Viser 6 tegn startende fra 0., det allerførste
$tekst .= $eksempel;
echo $tekst; //vil udskrive "onkel George"

Trimning af tekst til det første mellemrum

$text = "Hej verden!";
echo substr($tekst, 0, strpos($tekst, " ")); // Udskriver "Hej"

Færdiglavet PHP-funktion til trimning af tekst med PHP Words

function cut($streng, $længde)(
$streng = mb_substr($streng, 0, $længde,"UTF-8"); // klip og arbejd med alle kodninger og angiv kildekodningen
$position = mb_strrpos($string, " ", "UTF-8"); // bestem placeringen af ​​det sidste mellemrum. Det er herved, vi adskiller ordene.
$string = mb_substr($streng, 0, $position, "UTF-8"); // Trim variablen efter position
returnere $streng;
}

$text = "Den nordlige krig sluttede i 1721";
echo cut($tekst, 17); // vil vise "Northern War", uden den del af ordet "ended"

Du kan trimme med ord gennem en række...

$text = "Microsoft blev grundlagt af Bill Gates tilbage i 1975.";

$array = explode(" ",$tekst); // bearbejde strengen til et array
$array = array_slice($array,0,5); // vælg de første 5 ordelementer
$nytekst = implode(" ",$array); // konverter arrayet tilbage til en streng

Echo $newtext;//Vil vise "Microsoft blev grundlagt af Bill Gates"

Online konsultation om vedligeholdelse af websteder i Ulyanovsk: ICQ# 179104682

Sådan trimmes en kyrillisk streng ved hjælp af PHP

Dato for artiklens udgivelse: 06/01/2014

Oprettelse af et websted i Ulyanovsk med seriøs funktionalitet og interaktion med databaser kræver meget ofte, at en bestemt linje ikke overstiger en bestemt specificeret volumen. Dette kan være nødvendigt, for eksempel for at begrænse antallet af tegn, der sendes til databaseserveren ved hjælp af inputfeltet, for kun at vise en del af en linje på en webstedsside (f.eks. når du opretter nyhedsmeddelelser af samme højde på en liste) og til mange andre opgaver.

Den første ting, som begyndere programmører støder på, er PHP-funktionen substr. Den bruges faktisk til at trimme strenge, og dens syntaks er enkel substr(streng, int start [, int længde]), hvor int start er starttegnet, hvorfra man begynder at klippe strengen, og den valgfri parameter int længde er antallet af tegn, der skal klippes. Det kan dog virke mærkeligt for en uerfaren programmør, hvis han forsøger at bruge den til at trimme en kyrillisk streng i PHP. Som et resultat af, at substr arbejder med en kyrillisk streng, kan et spørgsmålstegn eller et spørgsmålstegn i en diamant forekomme i slutningen af ​​den trimmede streng, og af en eller anden grund er det samlede antal trimmede tegn to gange mindre end det, der var angivet i parameteren int længde. Hvorfor sker dette?

Faktum er, at russiske tegn i UTF-8 er 2 bytes store, og latinske tegn er kun 1 byte. PHP-funktionen substr skærer en streng efter bytes, ikke efter tegn. Hvis strengen består af latinske tegn, så sker der ikke noget mærkeligt, da antallet af tegn falder sammen med antallet af bytes. Og når man arbejder med det kyrilliske alfabet, hvor hvert tegn fylder 2 bytes, kan int længde-parameteren nemt falde ind i "midten" af tegnet, og som et resultat vil vi i slutningen af ​​skærelinjen, når vi udskriver, se det skæbnesvangre spørgsmålstegn i en diamant.

Hvordan skæres en del af en linje korrekt ud med det kyrilliske alfabet?

Løsningen på dette problem er faktisk meget enkel. For korrekt PHP trimning af en streng, der indeholder kyrilliske tegn, skal du bruge PHP-funktionen iconv_substr

Funktionens syntaks er enkel:

iconv_substr (streng, int start [, int længde [, tegnsæt]])

Eksempel på trimning af en russisksproget streng til 80 tegn med UTF-8-kodning ved hjælp af iconv_substr:

$new_string = iconv_substr ($string, 0 , 80 , “UTF-8”);

Tallet nul i eksemplet betyder, at optællingen af ​​80 tegn starter helt fra begyndelsen af ​​linjen.

Adaptivt webstedslayout involverer passende ændringer på dets sider afhængigt af den enhed, den besøgende bruger. Hvis med hensyn til blok- og inline-elementer næsten alt kan "automatiseres" ved hjælp af CSS og JavaScript, så er det, når man genererer indhold og bruger databaser, svært at undvære serversiden.

Vi afkorter normalt en linje i PHP, når et HTML-layoutelement har en begrænsning på antallet af tegn, der er synlige, men dette er en privat opgave.

Traditionel løsning

En af de mest populære og hyppigt brugte funktioner er substr(). To eller tre parametre overføres til det:

    kildestreng; startposition ($iPos); længden af ​​den understreng, der skal skæres ($iLen).

Den sidste parameter kan udelades. Hvis kun to parametre er angivet: resultatet af substr() vil være en understreng, fra startpositionen ($iPos) til slutningen af ​​den originale streng. Hvis tre parametre blev bestået, trimmer vi PHP-strengen fra startpositionen ($iPos) til den angivne længde ($iLen).

Det er kun muligt at vælge begyndelsen af ​​en streng ved hjælp af denne funktion, når den første parameter er nul. Hvis startpositionen er negativ, vil PHP betragte tegnet i position $iPos fra slutningen af ​​strengen som begyndelsen, hvorfra vi trunkerer strengen. Tegn på en linje er nummereret fra nul.

Særlig funktion

PHP betragter opgaven med at "klippe en snor" (i bred forstand) i kontekst: fra begge sider. Historisk set er dette trim()-funktionen, som har til formål at fjerne ubetydelige tegn:

    mellemrum; linjeskift; vogn retur; tabulering; nul-tegn

fra begge ender af linjen. Dette er en meget populær funktion, især når man arbejder med databaser, hvor udvalget ofte indeholder mange mellemrum. Brug af funktionen explode() resulterer også ofte i ekstra tegn i begyndelsen og slutningen af ​​strengen.

Det er dog ikke alle udviklere, der bruger trim()-funktionen til sit fulde potentiale. Til opgaven "truncate a string" foreslår PHP at bruge den anden parameter i funktionen, hvor du kan angive ethvert sæt af tegn, der skal elimineres fra kildestrengen.


Det er vigtigt, at tegn kun fjernes fra begyndelsen og slutningen af ​​kildestrengen. Det er vigtigt, at ved at manipulere maskerne af de tegn, der skal slettes, og rækkefølgen af ​​underopgaver.

    Først klippede vi PHP-strengen af ​​én maske ad gangen. Så en til. Så på den tredje.

Som et resultat af en række muligheder for at bruge én funktion, afskærer vi teksten i PHP efter behov for at løse opgaven.

Ikke-standardiserede metoder

Hvis vi ikke overvejer hele rækken af ​​linjefunktioner i sproget, så giver et par funktioner explode()/implode() og str_replace()-funktionen dig mulighed for at løse ikke-standardiserede problemer med at "skære" linjeinformation.


Resultatet af en MySQL-forespørgsel er altid formelt i strukturen af ​​de returnerede oplysninger, og indholdet af felterne (elementerne) i resultatet bestemmes altid af kilden, det vil sige udvikleren, der har designet databasen.

Dette er et særligt eksempel, men det besvarer nøjagtigt spørgsmålet: hvordan afkortes en linje i PHP, når der er mange linjer. Trm()-funktionen er en bestemt, og dens historie blev bestemt af opgaver, når der ikke var meget information, og der ikke var behov for at afskære andet end ubetydelige tegn.

I dag cirkulerer information i store mængder, og skæring linje for linje er ikke kun unødvendigt, men også irrationelt.

Opdeling i komponenter er også en mulighed, ligesom at klippe en snor af. PHP vil automatisk bruge explode() til at skære en stor tekst i mange nødvendige linjer. Ved at bruge funktionen str_replace() - det vil sige at erstatte en forekomst af tegn med en anden - kan du opnå en lignende effekt.


Dynamikken og mængden af ​​information, der skal behandles, er først og fremmest en passende løsning og ikke brugen af ​​én særlig funktion.