Trim siste tegn i php-strengen. Trimming av en PHP-streng: enkle måter

Nettstedet forutsetter tilstrekkelige endringer på sidene sine avhengig av enheten den besøkende bruker. Hvis med hensyn til blokk- og inline-elementer nesten alt kan "automatiseres" ved hjelp av CSS og JavaScript, er det vanskelig å gjøre uten serversiden når du genererer innhold og bruker databaser.

Vi trunkerer vanligvis en linje i PHP når et HTML-layoutelement har en begrensning på antall tegn som er synlige, men dette er en privat oppgave.

Tradisjonell løsning

En av de mest populære og ofte brukte funksjonene er substr(). To eller tre parametere sendes til den:

  • kildestreng;
  • startposisjon ($iPos);
  • lengden på delstrengen som skal kuttes ($iLen).

Den siste parameteren kan utelates. Hvis bare to parametere er gitt: resultatet av substr() vil være en delstreng, fra startposisjonen ($iPos) til slutten av den opprinnelige strengen. Hvis tre parametere ble passert, trimmer vi PHP-strengen fra startposisjonen ($iPos) til den angitte lengden ($iLen).

Å velge bare begynnelsen av en streng med denne funksjonen er mulig når den første parameteren er null. Hvis startposisjonen er negativ, vil PHP vurdere tegnet ved posisjon $iPos fra slutten av strengen som begynnelsen som vi trunkerer strengen fra. Tegn på en linje er nummerert fra null.

Spesiell funksjon

PHP vurderer oppgaven med å "klippe en streng" (i vid forstand) i kontekst: fra begge sider. Historisk sett er dette trim()-funksjonen, som tar sikte på å fjerne ubetydelige tegn:

  • mellomrom;
  • linjeskift;
  • vognretur;
  • tabulering;
  • nulltegn

fra begge ender av linjen. Dette er en veldig populær funksjon, spesielt når du arbeider med databaser, hvor utvalget ofte inneholder mange mellomrom. Bruk av funksjonen explode() resulterer også ofte i ekstra tegn på begynnelsen og slutten av strengen.

Imidlertid bruker ikke alle utviklere trim()-funksjonen til sitt fulle potensial. For oppgaven "truncate a string" foreslår PHP å bruke den andre parameteren til funksjonen, der du kan spesifisere ethvert sett med tegn som skal elimineres fra kildestrengen.

Det er viktig at tegn bare fjernes fra begynnelsen og slutten av kildestrengen. Det er viktig at ved å manipulere maskene til tegnene som skal slettes og sekvensen av deloppgaver.

  • Først kuttet vi av PHP-strengen én maske om gangen.
  • Så en til.
  • Så på den tredje.

Som et resultat av en rekke alternativer for bruk av én funksjon, kuttet vi av teksten i PHP etter behov for å løse oppgaven.

Ikke-standard metoder

Hvis vi ikke vurderer hele spekteret av linjefunksjoner i språket, så lar et par funksjoner explode()/implode() og str_replace()-funksjonen deg løse ikke-standard problemer med å "kutte" linjeinformasjon.

Resultatet av en MySQL-spørring er alltid formell i strukturen til informasjonen som returneres, og innholdet i feltene (elementene) i resultatet bestemmes alltid av kilden, det vil si utvikleren som har designet databasen.

Dette er et spesielt eksempel, men det svarer nøyaktig på spørsmålet: hvordan avkorte en linje i PHP når det er mange linjer. Trm()-funksjonen er en spesiell funksjon, og dens historie ble bestemt av oppgaver når det ikke var mye informasjon, og det var ikke nødvendig å kutte av noe annet enn ubetydelige tegn.

I dag sirkulerer informasjon i store mengder og å kutte linje for linje er ikke bare unødvendig, men også irrasjonelt.

Å dele opp i komponenter er også et alternativ, som å kutte av en streng. PHP vil automatisk bruke explode() for å kutte en stor tekst i mange nødvendige linjer. Ved å bruke str_replace()-funksjonen - det vil si å erstatte en forekomst av tegn med en annen - kan du oppnå en lignende effekt.

Dynamikken og volumet av informasjon som må behandles er for det første en tilstrekkelig løsning, og ikke bruk av én spesiell funksjon.

Funksjon substr($string, $start, $length) , der $string er en variabel med tekst, $start er tegnet som nedtellingen starter fra (0 er tatt som det første tegnet), og $length er antall tegn i valgt tekst.

$text = "Eksempel og tekst";

$først = substr($tekst,0,6); // Viser 6 tegn fra 0., den aller første
ekko $først; // vil sende ut "Eksempel".

$second = substr($tekst,8,3); // Viser 3 tegn fra den 8
ekko $second; // vil skrive ut "og"
Hvis du ikke angir parameteren Antall tegn (2. siffer), vil funksjonen vise alle gjenværende tegn

$text = "Eksempel og tekst";

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

Trimming av russisk tekst ved å bruke mb_substr PHP-funksjonen

Funksjon mb_substr utfører samme oppgaver som substr, men er også i stand til å håndtere multibyte-kodinger. Derfor, når det gjelder russisk tekst, vil det være nyttig for deg mb_substr. Fungerer det samme

$text = "Eksempeltekst";

$first = mb_substr($text,0,6,"UTF-8"); // Viser 6 tegn fra 0., den aller første
// Merk følgende! Angi kodingen av kildeteksten! I dette tilfellet utf-8
ekko $først; // vil vise "Eksempel"

$second = mb_substr($tekst,7,6,"UTF-8"); // Viser 6 tegn fra og med den 7
ekko $second; // vil skrive ut "tekst"
Vær oppmerksom på at når det gjelder kyrillisk (russisk tekst) er det bedre å angi kodingen på slutten av funksjonen. Eksemplet bruker det mest populære alternativet - UTF-8

Trimming av teksten fra slutten

Hvis du vil trimme teksten fra slutten, vil vi for å gjøre dette indikere et negativt tall for variabelen som indikerer fra hvilket tegn tekstvalget begynner

$text = "Sprite og Fanta";

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

Etter trimming legger vi også til tekst

Etter å ha trimmet variabelen med tekst, legg til ekstra tekst på slutten

$example = "Tekst tekst tekst tekst";

$eksempel = substr($eksempel,0,9); // Viser 9 tegn fra 0., den aller første
$example .= "mer...";
ekko $eksempel; // vil vise "Tekst tekst mer..."
Tvert imot kan du gjøre et opptak i begynnelsen, og deretter trimme teksten

$text = "Onkel";

$example = "George og Michael";
$eksempel = substr($eksempel,0,6); // Viser 6 tegn fra 0., den aller første
$tekst .= $eksempel;
ekko $tekst; //vil skrive ut "onkel George"

Trimming av tekst til første plass

$text = "Hei verden!";
echo substr($tekst, 0, strpos($tekst, " ")); // Skriver ut "Hei"

Ferdiglaget PHP-funksjon for trimming av tekst med PHP-ord

function cut($string, $length)(
$string = mb_substr($string, 0, $length,"UTF-8"); // klipp ut og arbeid med alle kodinger og angi kildekodingen
$posisjon = mb_strrpos($string, " ", "UTF-8"); // bestemme posisjonen til det siste rommet. Det er ved dette vi skiller ordene.
$string = mb_substr($string, 0, $posisjon, "UTF-8"); // Trim variabelen etter posisjon
return $string;
}

$text = "Nordkrigen endte i 1721";
echo cut($tekst, 17); // vil vise "Northern War", uten delen av ordet "ended"

Du kan trimme med ord gjennom en rekke...

$text = "Microsoft ble grunnlagt av Bill Gates tilbake i 1975.";

$array = eksplodere(" ",$tekst); // behandle strengen til en matrise
$array = array_slice($array,0,5); // velg de første 5 ordelementene
$newtext = implode(" ",$array); // konverter arrayet tilbake til en streng

Echo $newtext;//Vil vise "Microsoft ble grunnlagt av Bill Gates"

Online konsultasjon om vedlikehold av nettsider i Ulyanovsk: ICQ# 179104682

Hvordan trimme en kyrillisk streng ved hjelp av PHP

Dato for artikkelpublisering: 06.01.2014

Å lage et nettsted i Ulyanovsk med seriøs funksjonalitet og interaksjon med databaser krever ofte at en viss linje ikke overskrider et visst spesifisert volum. Dette kan være nødvendig, for eksempel for å begrense antall tegn som sendes til databaseserveren ved å bruke inndatafeltet, for å vise bare en del av en linje på en side (for eksempel når du oppretter nyhetskunngjøringer med samme høyde i en liste) og til mange andre oppgaver.

Det første som nybegynnere programmerere kommer over er PHP-funksjonen substr. Den brukes faktisk til å trimme strenger, og syntaksen er enkel substr(streng, int start [, int lengde]), der int start er starttegnet for å begynne å kutte strengen, og den valgfrie parameteren int lengde er antall tegn som skal kuttes. Imidlertid kan det virke rart for en uerfaren programmerer hvis han prøver å bruke den til å trimme en kyrillisk streng i PHP. Som et resultat av at substr arbeider med en kyrillisk streng, kan et spørsmålstegn eller et spørsmålstegn i en diamant vises på slutten av den trimmede strengen, og av en eller annen grunn er det totale antallet trimmede tegn to ganger mindre enn det som var spesifisert i parameteren int length. Hvorfor skjer dette?

Faktum er at russiske tegn i UTF-8 er 2 byte store, og latinske tegn er bare 1 byte. PHP-funksjonen substr kutter en streng med byte, ikke med tegn. Hvis strengen består av latinske tegn, skjer det ikke noe rart, siden antall tegn sammenfaller med antall byte. Og når du arbeider med det kyrilliske alfabetet, hvor hvert tegn tar opp 2 byte, kan int-lengdeparameteren lett falle inn i "midten" av tegnet, og som et resultat, på slutten av kuttlinjen, når vi sender ut, vil vi se det skjebnesvangre spørsmålstegnet i en diamant.

Hvordan kutte ut en del av en linje med det kyrilliske alfabetet riktig?

Løsningen på dette problemet er faktisk veldig enkel. For korrekt PHP-trimming av en streng som inneholder kyrilliske tegn, må du bruke PHP-funksjonen iconv_substr

Funksjonssyntaksen er enkel:

iconv_substr (streng, int start [, int lengde [, tegnsett]])

Eksempel for trimming av en russiskspråklig streng til 80 tegn med UTF-8-koding ved å bruke iconv_substr:

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

Tallet null i eksemplet betyr at tellingen av 80 tegn starter helt fra begynnelsen av linjen.

Tilpasset nettstedoppsett innebærer tilstrekkelige endringer på sidene avhengig av enheten den besøkende bruker. Hvis med hensyn til blokk- og inline-elementer nesten alt kan "automatiseres" ved hjelp av CSS og JavaScript, er det vanskelig å gjøre uten serversiden når du genererer innhold og bruker databaser.

Vi trunkerer vanligvis en linje i PHP når et HTML-layoutelement har en begrensning på antall tegn som er synlige, men dette er en privat oppgave.

Tradisjonell løsning

En av de mest populære og ofte brukte funksjonene er substr(). To eller tre parametere sendes til den:

    kildestreng; startposisjon ($iPos); lengden på delstrengen som skal kuttes ($iLen).

Den siste parameteren kan utelates. Hvis bare to parametere er gitt: resultatet av substr() vil være en delstreng, fra startposisjonen ($iPos) til slutten av den opprinnelige strengen. Hvis tre parametere ble passert, trimmer vi PHP-strengen fra startposisjonen ($iPos) til den angitte lengden ($iLen).

Å velge bare begynnelsen av en streng med denne funksjonen er mulig når den første parameteren er null. Hvis startposisjonen er negativ, vil PHP vurdere tegnet ved posisjon $iPos fra slutten av strengen som begynnelsen som vi trunkerer strengen fra. Tegn på en linje er nummerert fra null.

Spesiell funksjon

PHP vurderer oppgaven med å "klippe en streng" (i vid forstand) i kontekst: fra begge sider. Historisk sett er dette trim()-funksjonen, som tar sikte på å fjerne ubetydelige tegn:

    mellomrom; linjeskift; vognretur; tabulering; nulltegn

fra begge ender av linjen. Dette er en veldig populær funksjon, spesielt når du arbeider med databaser, hvor utvalget ofte inneholder mange mellomrom. Bruk av funksjonen explode() resulterer også ofte i ekstra tegn på begynnelsen og slutten av strengen.

Imidlertid bruker ikke alle utviklere trim()-funksjonen til sitt fulle potensial. For oppgaven "truncate a string" foreslår PHP å bruke den andre parameteren til funksjonen, der du kan spesifisere ethvert sett med tegn som skal elimineres fra kildestrengen.


Det er viktig at tegn bare fjernes fra begynnelsen og slutten av kildestrengen. Det er viktig at ved å manipulere maskene til tegnene som skal slettes og sekvensen av deloppgaver.

    Først kuttet vi av PHP-strengen én maske om gangen. Så en til. Så på den tredje.

Som et resultat av en rekke alternativer for bruk av én funksjon, kuttet vi av teksten i PHP etter behov for å løse oppgaven.

Ikke-standard metoder

Hvis vi ikke vurderer hele spekteret av linjefunksjoner i språket, så lar et par funksjoner explode()/implode() og str_replace()-funksjonen deg løse ikke-standard problemer med å "kutte" linjeinformasjon.


Resultatet av en MySQL-spørring er alltid formell i strukturen til informasjonen som returneres, og innholdet i feltene (elementene) i resultatet bestemmes alltid av kilden, det vil si utvikleren som har designet databasen.

Dette er et spesielt eksempel, men det svarer nøyaktig på spørsmålet: hvordan avkorte en linje i PHP når det er mange linjer. Trm()-funksjonen er en spesiell funksjon, og dens historie ble bestemt av oppgaver når det ikke var mye informasjon, og det var ikke nødvendig å kutte av noe annet enn ubetydelige tegn.

I dag sirkulerer informasjon i store mengder og å kutte linje for linje er ikke bare unødvendig, men også irrasjonelt.

Å dele opp i komponenter er også et alternativ, som å kutte av en streng. PHP vil automatisk bruke explode() for å kutte en stor tekst i mange nødvendige linjer. Ved å bruke str_replace()-funksjonen - det vil si å erstatte en forekomst av tegn med en annen - kan du oppnå en lignende effekt.


Dynamikken og volumet av informasjon som må behandles er for det første en tilstrekkelig løsning, og ikke bruk av én spesiell funksjon.