Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Hekuri
  • Php duke shkurtuar një rresht nga fundi. Si të shkurtoni një varg cirilik duke përdorur PHP

Php duke shkurtuar një rresht nga fundi. Si të shkurtoni një varg cirilik duke përdorur PHP

Konsultimi online për mirëmbajtjen e faqes në Ulyanovsk: ICQ# 179104682

Si të shkurtoni një varg cirilik duke përdorur PHP

Data e publikimit të artikullit: 01.06.2014

Krijimi i një faqe interneti në Ulyanovsk me funksionalitet serioz dhe ndërveprim me bazat e të dhënave shumë shpesh kërkon që një linjë e caktuar të mos kalojë një vëllim të caktuar të specifikuar. Kjo mund të jetë e nevojshme, për shembull, për të kufizuar numrin e karaktereve të transmetuara në serverin e bazës së të dhënave duke përdorur fushën e hyrjes, për të shfaqur vetëm një pjesë të një rreshti në një faqe faqeje (për shembull, kur krijohen njoftime lajmesh me lartësi të barabartë në një listë) dhe për shumë detyra të tjera.

Gjëja e parë që hasin programuesit fillestar është funksioni PHP substr. Në fakt përdoret për të shkurtuar vargjet dhe sintaksa e tij është e thjeshtë nënstr(string, int start [, int length]), ku int start është karakteri fillestar nga i cili fillon prerja e vargut dhe parametri opsional int length është numri i karaktereve që duhen prerë. Megjithatë, mund të duket e çuditshme për një programues të papërvojë nëse ai përpiqet ta përdorë atë për të shkurtuar një varg cirilik në PHP. Si rezultat i punës së nënstr me një varg cirilik, një pikëpyetje ose një pikëpyetje në një diamant, mund të shfaqet në fund të vargut të prerë dhe për disa arsye numri i përgjithshëm i karaktereve të shkurtuara është dy herë më i vogël se ai që ishte specifikuar në parametrin int length. Pse po ndodh kjo?

Fakti është se karakteret ruse në UTF-8 janë 2 bajt në madhësi, dhe karakteret latine janë vetëm 1 bajt. Funksioni PHP substr shkurton një varg me bajt, jo me karaktere. Nëse vargu përbëhet nga karaktere latine, atëherë asgjë e çuditshme nuk ndodh, pasi numri i karaktereve përkon me numrin e bajteve. Dhe kur punoni me alfabetin cirilik, ku çdo karakter merr 2 bajt, parametri i gjatësisë int lehtë mund të bjerë në "mesin" e karakterit, dhe si rezultat, në fund të vijës së prerjes, kur nxjerrim, ne do të shih atë pikëpyetjen fatkeqe në një diamant.

Si të prerë saktë një pjesë të një rreshti me alfabet cirilik?

Zgjidhja e këtij problemi është në fakt shumë e thjeshtë. Për shkurtimin e saktë PHP të një vargu që përmban karaktere cirilike, duhet të përdorni funksionin PHP iconv_substr

Sintaksa e funksionit është e thjeshtë:

iconv_substr (vargu, fillimi int [, gjatësia int [, grupi i karaktereve]])

Shembull për shkurtimin e një vargu në gjuhën ruse në 80 karaktere me kodim UTF-8 duke përdorur iconv_substr:

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

Numri zero në shembull do të thotë që numërimi prej 80 karakteresh fillon që nga fillimi i rreshtit.

Programuesit shumë shpesh duhet të merren me funksione të ndryshme për të punuar me vargje në PHP. Të gjitha funksionet janë paraqitur në libra të ndryshëm referencë, por unë do të doja të kufizohesha vetëm në ato kryesore.

Funksioni PHP substr - merrni pjesë të një vargu

Kur ju duhet të zgjidhni një pasazh me një gjatësi të caktuar nga një varg duke filluar nga një pozicion i caktuar, funksioni substr vjen në shpëtim.Në këtë funksion, të ndarë me presje, kalohet: teksti, pozicioni fillestar dhe numri i karaktereve. Parametri i fundit është opsional dhe nëse mungon, rezultati i funksionit do të jetë një ekstrakt i tekstit burim nga pozicioni fillestar deri në fund të rreshtit.

Funksioni PHP strlen - zbuloni gjatësinë e një vargu

Ky funksion kthen gjatësinë e vargut origjinal si numër i plotë.Me këtë funksion mund të kontrolloni gjatësinë e të dhënave të futura nga përdoruesi, ose ndoshta diçka tjetër.

Shkurtimi i funksionit PHP - hiqni hapësirat shtesë nga skajet e një vargu

Funksioni i shkurtimit heq çdo karakter të hapësirës së bardhë nga skajet e një vargu, duke përfshirë karakterin e linjës së re. Ekzistojnë gjithashtu funksione rtrim dhe ltrim, të cilat heqin hapësirat në fund ose në fillim të një rreshti.

Funksioni PHP strpos - kërkon një varg

Funksioni strpos kërkon një nënvarg në një varg dhe, nëse është i suksesshëm, kthen pozicionin e fillimit të atij nënvargu. Pas gjetjes së nënvargut të parë, kërkimi ndalon.Rendi i argumenteve në funksion, siç mund ta keni marrë me mend, është si më poshtë: vargu burimor, nënvargu, pozicioni fillestar. Parametri i tretë është opsional, por përpiquni të mbani mend se është atje.

Funksioni PHP strip_tags - heq etiketat HTML dhe PHP nga një varg

Funksioni strip_tags kthen një varg të zhveshur nga etiketat html dhe php. Do të jetë e dobishme për ju kur shkruani një modul komenti në faqen tuaj, në mënyrë që të mos u lini sulmuesve mundësinë të hakojnë faqen tuaj përmes formularit.html Dhe php duhet të hiqet"; echo strip_tags($text); echo strip_tags($text," ");//mos i fshini em etiketat ?> Argumenti i parë i funksionit është teksti burimor dhe i dyti janë etiketat që nuk duhet të fshihen.

Funksioni PHP strtolower - konverton një varg në shkronja të vogla

Funksioni PHP strtoupper - konverton një varg në shkronja të mëdha

Nëse e keni parë këtë faqe të dobishme, mund të ndihmoni në zhvillimin e tij duke e vendosur

Faqja supozon ndryshime adekuate në faqet e saj në varësi të pajisjes që përdor vizitori. Nëse në lidhje me elementët bllok dhe inline pothuajse gjithçka mund të "automatizohet" duke përdorur CSS dhe JavaScript, atëherë kur gjeneroni përmbajtje dhe përdorni bazat e të dhënave, është e vështirë të bëhet pa anën e serverit.

Zakonisht shkurtojmë një rresht në PHP kur një element i paraqitjes HTML ka një kufi në numrin e karaktereve që janë të dukshëm, por kjo është një detyrë private.

Zgjidhje tradicionale

Një nga funksionet më të njohura dhe më të përdorura është substr(). Dy ose tre parametra i kalohen asaj:

  • varg burimi;
  • pozicioni fillestar ($iPos);
  • gjatësia e nënvargut që do të pritet ($iLen).

Parametri i fundit mund të hiqet. Nëse jepen vetëm dy parametra: rezultati i substr() do të jetë një nënvarg, nga pozicioni fillestar ($iPos) deri në fund të vargut origjinal. Nëse kalohen tre parametra, atëherë ne e shkurtojmë vargun PHP nga pozicioni fillestar ($iPos) në gjatësinë e specifikuar ($iLen).

Zgjedhja e vetëm fillimit të një vargu duke përdorur këtë funksion është e mundur kur parametri i parë është zero. Nëse pozicioni fillestar është negativ, atëherë PHP do ta konsiderojë karakterin në pozicionin $iPos nga fundi i vargut si fillimi nga i cili shkurtojmë vargun. Karakteret në një rresht numërohen duke filluar nga zero.

Funksion i veçantë

PHP e konsideron detyrën e "prerjes së një vargu" (në një kuptim të gjerë) në kontekst: nga të dyja anët. Historikisht, ky është funksioni trim(), i cili synon të heqë karaktere të parëndësishme:

  • hapësira;
  • ndërprerjet e linjës;
  • kthim ngarkese;
  • tabelimi;
  • karaktere të pavlefshme

nga të dy skajet e vijës. Kjo është një veçori shumë e njohur, veçanërisht kur punoni me bazat e të dhënave, përzgjedhja nga e cila shpesh përmban shumë hapësira. Përdorimi i funksionit explode() gjithashtu shpesh rezulton në karaktere shtesë në fillim dhe në fund të vargut.

Megjithatë, jo të gjithë zhvilluesit e përdorin funksionin trim() në potencialin e tij të plotë. Për detyrën "shkurtoj një varg", PHP sugjeron përdorimin e parametrit të dytë të funksionit, ku mund të specifikoni çdo grup karakteresh që duhet të eliminohen nga vargu burimor.

Është e rëndësishme që karakteret të hiqen vetëm nga fillimi dhe fundi i vargut burimor. Është e rëndësishme që duke manipuluar maskat e personazheve të fshihen dhe sekuenca e nëndetyrave.

  • Së pari, ne prerë vargun PHP një maskë në një kohë.
  • Pastaj një tjetër.
  • Pastaj në të tretën.

Si rezultat i një sekuence opsionesh për përdorimin e një funksioni, ne kemi prerë tekstin në PHP siç kërkohet për të zgjidhur detyrën.

Metodat jo standarde

Nëse nuk marrim parasysh të gjithë gamën e funksioneve të linjës së gjuhës, çifti i funksioneve explode()/implode() dhe funksioni str_replace() ju lejojnë të zgjidhni problemet jo standarde të "prerjes" së informacionit të linjës.

Rezultati i një pyetjeje MySQL është gjithmonë formal në strukturën e informacionit të kthyer, dhe përmbajtja e fushave (elementeve) të rezultatit përcaktohet gjithmonë nga burimi, domethënë zhvilluesi që ka projektuar bazën e të dhënave.

Ky është një shembull i veçantë, por i përgjigjet saktësisht pyetjes: si të shkurtohet një rresht në PHP kur ka shumë rreshta. Funksioni trm() është i veçantë dhe historia e tij përcaktohej nga detyrat kur nuk kishte shumë informacion dhe nuk kishte nevojë të shkëputej asgjë tjetër përveç karaktereve të parëndësishme.

Sot informacioni qarkullon në vëllime të mëdha dhe prerja rresht pas rreshti është jo vetëm e panevojshme, por edhe e paarsyeshme.

Ndarja në komponentë është gjithashtu një opsion, si prerja e një vargu. PHP do të përdorë automatikisht explode() për të prerë një tekst të madh në shumë rreshta të kërkuar. Duke përdorur funksionin str_replace() - domethënë, duke zëvendësuar një shfaqje karakteresh me një tjetër - mund të arrini një efekt të ngjashëm.

Dinamika dhe vëllimi i informacionit që duhet të përpunohet është, para së gjithash, një zgjidhje adekuate, dhe jo përdorimi i një funksioni të veçantë.

Artikujt më të mirë mbi këtë temë