Provjerite da li je podniz prisutan u stringu php. PHP: rad sa stringovima. PHP string funkcije. Rukovanje podacima niza bez korištenja regularnih izraza

Stringovi igraju veliku ulogu, zadaci raščlanjivanja stringova su prilično česti u PHP-u, pa pogledajmo neke osnovne funkcije za rad sa stringovima. Ali prije nego počnemo raditi sa stringovima, otvorimo datoteku php.ini i pronađite sljedeći red u njemu:

;extension=php_mbstring.dll

Dekomentirajte ga tako što ćete ukloniti tačku i zarez. A pošto se naš php.ini fajl promijenio, ponovo ćemo pokrenuti Apache web server.

Sljedeće će ispisati "best", "regex", "today". A sada, evo načina da pogledate stvari koje bi sigurno zanimale ljubitelje algoritama među vama. U određenom smislu, oba su se vratila. U primjeru ispod, naš graničnik je niz brojeva, kao što je "123". Umjesto da ih odbacimo, želimo ih zadržati.

Ali ne moramo pohraniti cijeli graničnik. Razdvajanje pomoću nevidljivog separatora. Ovdje je sjajna karakteristika dijeljenja stringova pomoću regularnog izraza. Zainteresovani ste za svaku riječ. Postoji "nevidljivi" graničnik: svako mjesto gdje je sljedeći znak veliko slovo. Ovo se može izraziti kao jednostavan pogled. Možete ga nazvati "ograničavačem nulte širine".

Povezivanje ekstenzije php_mbstring.dll omogućit će vam korištenje nekih dodatnih funkcija za rad sa stringovima koji nisu u standardnom PHP skupu.

funkcije strpos() i mb_strpos().

Funkcija strpos($str, $search) vraća poziciju podniza ili znaka $search u nizu $str, ili false ako string $str ne sadrži podniz $search:

Ali možda želimo da spojimo riječi iz filma u lanac s razmacima između riječi? Evo koda i izlaza. Zamjena nevidljivog separatora. Na primjer, u nizu "Marlon Brando", obrazac "Marlon\\Kbrando" bi vratio "Brando". Pa, možete dobiti "Brando" sa grupom za snimanje ili pogledom, pa šta je to?

Moja stranica prikazuje najbolji trik s regularnim izrazom. Ovaj program obavlja šest najčešćih zadataka regularnog izraza. Podešavanje je da ga ne zanimaju opšta podudaranja: podaci koje tražimo nalaze se u grupi hvatanja 1, ako je postavljena.

$input = "Ovo je kraj"; $search = "je"; $position = strpos($input, $search); // 2 if($position!==false) ( echo "Pozicija podniza "$search" u nizu "$input": $position"; )

Kada koristite ovu funkciju, imajte na umu da indeksiranje znakova u nizu počinje od nule, tako da će pozicija znaka "T" biti jednaka 0. Stoga, $position!=false poređenje neće raditi ispravno, jer false i 0 kada se uporede i prebace na zajednički tip će predstavljati istu vrijednost. Stoga je u ovom slučaju ispravno koristiti samo operator ekvivalencije: $position!==false ili $position===false .

Sve ove funkcije uzimaju string za promjenu kao argument i vraćaju promijenjeni niz. Važno je napomenuti da ove funkcije nisu destruktivne, što znači da ne mijenjaju originalni niz, samo vraćaju potpuno novi string koji sadrži modifikaciju, ostavljajući originalni niz nepromijenjen. Vraćeni niz može se dodijeliti novoj varijabli ili koristiti direktno u drugoj funkciji.

funkcije strpos() i mb_strpos().

Ako je potrebno promijeniti originalni niz, vraćeni niz se jednostavno može dodijeliti originalnoj varijabli. Postoji i prošireni skup znakova koji sadrži 255 znakova. Prilikom izvršavanja gornjeg koda, bit će proizveden sljedeći rezultat.

Sada primijenimo funkciju na još jedan primjer:

$input = "Mama je oprala okvir"; $search = "mi"; $position = strpos($input, $search); // 9

Neočekivano, rezultat funkcije će biti broj 9. Iako vidimo da je prava pozicija podniza "mi" u originalnom nizu 5.

Stvar je u tome da neke string funkcije ne obrađuju uvijek ispravno ćirilične znakove, pa je za njih bolje koristiti drugu funkciju - mb_strpos() :

String predstavlja string koji će biti prikazan i sadrži specifikacije formata. Varijable definiraju varijable koje treba zamijeniti umjesto odgovarajućih pravila oblikovanja. Specifikatori formata počinju sa % nakon čega slijedi slovo koje označava tip varijable koja se prikazuje. Opciona pravila se mogu postaviti između % i slova tipa za kontrolu formatiranja. Sljedeća tabela navodi tipove varijabli i odgovarajuće slovo koje treba koristiti pri izradi pravila oblikovanja.

$position = mb_strpos($input, $search); // 5

funkcija strrpos().

Funkcija strrpos() je na mnogo načina slična funkciji strpos(), samo što traži poziciju ne prvog, već posljednjeg pojavljivanja podniza u nizu:

$input = "Ovo je kraj"; $search = "je"; $position = strpos($input, $search); // 5

Ali opet, ova funkcija ne radi ispravno sa ćiriličnim znakovima, pa moramo koristiti njen analog - mb_strrpos() :

Prije nego što pogledamo opcije formatiranja, prvo moramo vidjeti neka od gornjih pravila na djelu. Moja omiljena boja je zelena i moj srećni broj. Pretpostavimo da želimo da izrazimo svoj srećni broj kao heksadecimalnu vrednost.

Dobijanje i zamjena podniza u PHP-u: rad sa stringovima

Tako se dobija sledeći rezultat. Na kraju, moramo pogledati opcije formatiranja koje se mogu navesti iza znaka %. Koristi se u sprezi sa specifikacijom širine i podrazumevano je na razmak.

  • - Sile oba ili - ispred brojeva.
  • Podrazumevano, samo negativni brojevi prikazuju svoj polaritet.
Kao i uvijek, nadamo se da će neki primjeri pomoći u razjašnjavanju ovih opcija.

$position = mb_strrpos($input, $search);

trim() funkcija

Trim($str) funkcija uklanja vodeći i prateći razmaci, kao i kontrolni znakovi "\n", "\r", "\t":

$input = "Mama je oprala okvir"; $input = trim($input);

Promjena slučaja

Da konvertujete niz u mala slova, koristite funkciju strtolower:

$input = "Svijet je moj"; $input = strtolower($input);

Da upišete niz s ćiriličnim znakovima, možete koristiti funkciju mb_strtolower:

Ograničavanje broja s pomičnim zarezom na dvije decimale. Za formatiranje sa _ znakova širine do 12 znakova. Što dovodi do sljedećeg rezultata. Razgraničenje je znak koji se koristi kao tačka prekida između elemenata niza. Indicirano maksimalni iznos elementi niza u koje se string treba podijeliti. Kada se dostigne ograničenje, posljednji element niza sadrži ostatak niza. Na primjer, razmak ili zarez. . Gornji primjer će proizvesti sljedeći rezultat, koji prikazuje svaku riječ u rečenici koja je dodijeljena elementu niza.

$input = mb_strtolower($input);

Za pretvaranje stringa u velika slova koriste se funkcije strtoupper() /mb_ strtoupper(), koje rade na sličan način.

funkcija strlen().

Funkcija strlen() vraća dužinu niza, odnosno broj znakova u njemu:

$input = "zdravo svijete"; $num = strlen($input); echo $num;

Funkcija strlen() također ne radi ispravno sa ćirilicom, pa je u ovom slučaju bolje koristiti funkciju mb_strlen():

Povratna vrijednost funkcija za poređenje nizova

Niz. Funkcija je nedestruktivna jer ne mijenja originalni niz. Sljedeći primjer uklanja razmak iz navedenog niza. Kada se razvijaju web aplikacije, vrlo je uobičajeno upoređivati ​​dva niza. Izvodi podudaranje osjetljivo na velika i mala slova na određenom broju znakova iz svakog niza i vraća vrijednost na osnovu rezultata podudaranja. Izvodi poređenje određenog broja znakova iz svakog niza bez obzira na velika i mala slova i vraća vrijednost na osnovu rezultata podudaranja. Ako je veći, vraća se pozitivan broj.

$input = "Mama je oprala okvir"; $num = mb_strlen($input); echo $num;

Dobivanje podniza

Koristeći funkciju substr($str, $start [, $length]) možete dobiti određeni dio iz jednog niza. Ova funkcija seče string $str od karaktera na poziciji $start do kraja niza. Sa dodatnim opcionim parametrom $length, možete odrediti broj znakova za izrezivanje.

Pristup i promjena znakova u nizu

Pojedinačnim znakovima u nizu može se pristupiti i modificirati se prema njihovom položaju u nizu. Imajte na umu da su indeksi zasnovani na nuli, tako da je prvi znak u nizu na poziciji indeksa 0, a ne na poziciji. Na primjer, za pristup drugom znaku u nizu. Slično, poziciji znaka može se dodijeliti nova vrijednost pomoću operatora dodjeljivanja.

Izlaz iz gornjeg izlaza će izgledati ovako. Prvi argument je niz koji se traži, a drugi je podniz za pretraživanje. Imajte na umu da ako string počinje podnizom, doći će do neke zabune jer će funkcija vratiti 0, što se jednako može protumačiti kao neuspjeh u pronalaženju podudaranja. Ključna stvar koju treba razumjeti ovdje je da neuspjeh u pronalaženju podudaranja vraća nultu logičku vrijednost. Podudaranje koje počinje na poziciji nula će vratiti numeričku vrijednost.

$input = "Svijet je moj!"; $subinput1 = substr($input, 2); $subinput2 = substr($input, 2, 6); echo $subinput1; eho"
"; echo $subinput2;

Budući da ova funkcija ne radi ispravno s ćirilicom, trebali biste umjesto nje koristiti funkciju mb_substr(), koja djeluje slično:

$input = "Mama je oprala okvir"; $subinput1 = mb_substr($input, 2); $subinput2 = mb_substr($input, 2, 6);

Zamjena podniza

Funkcija str_replace($old, $new, $input) se koristi za zamjenu određenog dijela stringa. Ova funkcija zamjenjuje sva pojavljivanja $starog podniza u $input nizu s $novim podnizom, osjetljiv na velika i mala slova:

Da biste riješili ovaj problem, najbolje je da uspoređujete oba tipa varijabli. Opcioni treći argument specificira dužinu podniza. Funkcija vraća traženi podniz. Prvi je izvorni niz na kojem će se izvršiti zamjena. Drugi argument je zamjenski niz. Treći definira pomak zamjenskog startnog indeksa. Opcijski četvrti argument specificira broj znakova iz točke pomaka koji će se uključiti u zamjenu.

Sada možemo proširiti naš primjer da zamijenimo dio teksta u našem nizu. Gornji primjer će dati sljedeći rezultat. Nova linija = Na drvetu je pas. Savršeno je ispravno zamijeniti jedan podniz drugim različite dužine. Prvi argument je niz koji treba zamijeniti, drugi je zamjenska vrijednost, a treći je ciljni niz. Opcioni četvrti argument je referenca na varijablu u kojoj će se pohraniti rezultati zamjene za kasniju provjeru.

$input = "Mama je oprala okvir"; $input = str_replace("mi", "ona", $input); echo $input;

Pronalaženje prvog pojavljivanja znaka u nizu.

sintaksa:

String strchr (nanizana plast sijena, igla na niti)

Ova funkcija radi identično funkciji strstr().

Određuje odsustvo vodećih znakova u nizu.
sintaksa:

int strcspn(string str1, string str2)

Jednostavan primjer. Rezultat. Ako su vrijednosti pretraživanja i zamjene nizovi riječi, svaka riječ u nizu pretraživanja zamjenjuje se odgovarajućom vrijednošću u zamjenskom nizu. Gornji primjer dovodi do sljedećeg rezultata. Stoga su pogodni za svakog korisnika. Palindrom je niz znakova koji se čita isto s lijeva na desno i s desna na lijevo. Postoji mnogo načina da provjerite da li je dati niz palindrom.

Sljedeći odjeljak sadrži programe koji se bave izvođenjem operacija nad nizom. Ove operacije uključuju konkatenaciju i poređenje. Proces poređenja sadržaja dva niza kako bi se uvjerili da su jednaki naziva se poređenje. Ovaj odjeljak sadrži programe koji ilustruju gore navedene operacije. Dio ovog niza naziva se podniz.

Funkcija strspn() vraća dužinu početnog fragmenta stringa str1, koji se u potpunosti sastoji od znakova koji nisu u stringu str2.

strpbrk()

Potražite u nizu bilo koji znak iz datog skupa (PHP5)

sintaksa:

String strpbrk (niz plast sijena, niz char_list)

strpbrk() pretražuje niz stringova za znakove iz skupa char_list i vraća string počevši od pozicije na kojoj je karakter pronađen (ili FALSE ako znak nije pronađen). Parametar char_list je osjetljiv na velika i mala slova.

Odjeljak također sadrži programe koji provjeravaju da li dati niz sadrži podniz i pronalaze dužinu niza bez korištenja ugrađene funkcije. Sljedeći odjeljak govori o tri operacije koje se mogu izvesti na datom nizu. Zamjenjuju, brišu i poništavaju. Funkcija zamjene zamjenjuje pojavljivanja u datom nizu. Delete uklanja znakove sa navedenih pozicija, a funkcija Reverse preokreće znakove u nizu. Uklanja zadatu riječ iz niza, uklanja sve duplicirane riječi u nizu, uklanja sve znakove u drugom nizu koji su prisutni u prvom nizu.

$text = "Ovo je jednostavan tekst.";

echo strpbrk($text, "mi"); // Vraća "je je jednostavan tekst.", jer prvi se pojavljuje znak "i".

echo strpbrk($text, "S");// Daje "Jednostavan tekst." znakovi su osjetljivi na velika i mala slova
?>

Pronalaženje prvog pojavljivanja podniza u nizu.
sintaksa:

String strstr (nanizana plast sijena, igla na niti)

Funkcija strstr() vraća dio niza naveden u parametru stog sijena, počevši od prvog fragmenta navedenog u parametru igle i nastavljajući do kraja.

Oni broje broj samoglasnika i suglasnika u dijelu i broje ukupan broj riječi u rečenici koristeći argument komandna linija. Ponavljanje znakova u nizu naziva se frekvencija. Ovaj odeljak takođe ilustruje upotrebu funkcije kopiranja, koja kopira jedan niz u drugi pomoću rekurzije i programa koji čita dati niz i pronalazi zbir svih cifara u nizu. Zatim imamo programe koji koriste pojam rekurzije. Ovi programi uključuju program za pronalaženje prvog velikog slova u nizu pomoću rekurzije i program za pronalaženje dužine niza pomoću rekurzije.

$email = " [email protected]";
$domain = strstr($email, "@");
// ili $domain = strstr($email, ord("@"))
echo $domain;
// prikazuje @mail.ru

Pronalaženje prvog pojavljivanja podniza, neosjetljivo na velika i mala slova.
sintaksa:

Žičana vrpca (konopac sijena, igla sa žicom)

Funkcija stristr() vraća dio niza naveden u parametru stog sijena, počevši od prvog fragmenta navedenog u parametru igle i nastavljajući do kraja.
Vraća false u slučaju neuspjeha.
Ova funkcija je neosjetljiva na velika i mala slova.
Ako igla nije niz, tada se vrijednost pretvara u cijeli broj i koristi se kao kod za karakter koji se traži.

Ostali programi u ovom odeljku uključuju program za pronalaženje ponavljajućeg niza koji je duži, program za pronalaženje dužine najdužeg ponavljajućeg niza u nizu i program za pronalaženje svih mogućih podskupova niza. Anagram je proces pronalaženja nove riječi preuređivanjem originalnih slova riječi. Program u sledećem odeljku proverava da li su dva data niza anagrami. Ostali programi u ovom odeljku posvećeni su navođenju, prikazivanju, umetanju i štampanju znakova ili reči.

Pronalaženje posljednjeg pojavljivanja podniza.
sintaksa:

String strrchr (nanizana plast sijena, igla na niti)

Funkcija strrchr() vraća dio niza naveden u parametru stog sijena, počevši od posljednjeg fragmenta navedenog u parametru igle i nastavljajući do kraja.
Vraća false u slučaju neuspjeha.
Ova funkcija je osjetljiva na velika i mala slova.
Ako igla nije niz, tada se vrijednost pretvara u cijeli broj i koristi se kao kod za karakter koji se traži.

Ostali programi u ovom odeljku pokazuju upotrebu funkcije sortiranja. Programi uključuju sortiranje riječi u datom nizu, sortiranje niza, ignoriranje razmaka i ponavljanje znakova samo jednom, sortiranje niza i prikaz ponovljenih znakova samo jednom. Programi u ovom odeljku broje broj jedinstvenih reči, broje broj reči u datom tekstu ili rečenici i traže reč u datom nizu i zamenjuju je datom datom rečju. Takođe ima programe za prikaz znakova na datoj poziciji u datom nizu i za prikaz kombinacije dve reči iz dva data niza bez ponavljanja.

// dobijemo zadnji direktorij u $PATH
$dir = substr(strrchr($PATH, ":"), 1);
// i ovdje dobijamo sve nakon posljednjeg novog reda $text = "text 1nText2nText3";
echo substr(strrchr($text, 10), 1);

Pronalazi poziciju prvog pojavljivanja podniza u datom nizu.
sintaksa:

int strpos(niz gdje, niz šta [, int odakle])

Funkcija strpos() pokušava pronaći podniz koji je bio u nizu i, ako je uspješan, vraća poziciju (indeks) ovog podniza u nizu.
Prvi znak niza ima indeks 0. Opcioni parametar fromwhere se može podesiti ako se pretraga ne vrši od početka niza, već sa neke druge pozicije. U ovom slučaju, ovu poziciju treba prenijeti odakle. Ako se podniz ne može pronaći, funkcija vraća false.

Ove pojave mogu biti pojavljivanja riječi, pojavljivanja znakova ili pojavljivanja podniza. Na primjer, opseg aplikacije će potvrditi korisnička imena, koja se mogu sastojati samo od određenih znakova. Prvo ćemo pogledati sljedeći kod. U međuvremenu, svi znakovi iz klase znakova koji su definirani uglastim zagradama mogu se pojaviti koliko god često želite. Ovo smo izrazili sa plusom u uglastim zagradama.

Provjeravajte e-poštu općenito

Ako želimo dozvoliti ove znakove, moramo ih posebno označiti. Stoga možemo uključiti bilo koji drugi znak u klasu znakova da testiramo te znakove. Do sada smo se ograničili samo na njemačka slova, uključujući umlaute. Sljedeći primjer pokazuje jedan način. Dakle, regularni izraz odgovara bilo kojim proizvoljnim, često ponavljanim Unicode karakterima. Dodavanje bilo kojeg znaka našem regularnom izrazu se računa kao razmak. U ovom primjeru smo dodali razmak klasi znakova.

If(strpos($text, "a")===false) echo "Nije pronađeno!";
// Provjera: tri znaka jednakosti

Pronalazi poziciju prvog pojavljivanja podniza u datom nizu, bez obzira na velika i mala slova.
sintaksa:

int stripos(niz gdje, niz šta [, int odakle])

Funkcija stripos() pokušava pronaći podniz koji je bio u nizu i, ako je uspješan, vraća poziciju (indeks) ovog podniza u nizu.
Za razliku od strpos(), ova funkcija ne razlikuje velika i mala slova. Prvi znak niza ima indeks 0.
Opcioni parametar fromwhere se može podesiti ako se pretraga ne vrši od početka niza, već sa neke druge pozicije.
U ovom slučaju, ovu poziciju treba prenijeti odakle. Ako se podniz ne može pronaći, funkcija vraća false.
Ako parametar what nije niz, u tom slučaju njegova vrijednost se pretvara u cijeli broj i koristi se kao kod karaktera koji se traži.

$mystring1 = "xyz";
$mystring2 = "abc";

$pos1 = stripos($mystring1, $findme);
$pos2 = pruge ($mystring2, $findme);

// Naravno "a" nije u "xyz"
if ($pos1 === false) (
echo "String "$findme" nije pronađen u nizu "$mystring1"";
}

// Imajte na umu da se === koristi. Upotreba == neće dati pravi
// rezultat jer je "a" na poziciji nula. if ($pos2 !== false) (
echo "Pronađen "$findme" u "$mystring2" na poziciji $pos2";
}
?>

Napomena: Funkcija stripos() može se koristiti za traženje podataka u binarnom obliku.
Podrška: PHP 5

Pronalazi posljednju poziciju u datom nizu koji sadrži dati fragment.
sintaksa:

int strrpos (niz gdje, niz šta)

Ova funkcija pretražuje gdje string za posljednju poziciju na kojoj se pojavio karakter (ako je ono
niz od nekoliko znakova, tada se otkriva samo prvi od njih, ostali ne igraju nikakvu ulogu).

Ako je znak koji tražite prvi znak u nizu, ili ako uopće ne postoji, funkcija će vratiti 0.

Ako traženi znak nije pronađen, vraća false.

substr_count

Pronalazi broj pojavljivanja fragmenta u nizu.
sintaksa:

int substr_count(niz gdje, niz šta)

Funkcija substr_count() vraća broj fragmenata prisutnih u where stringu.

echo substr_count("www.spravkaweb.ru", ".");
// Izlaz 3

Određuje prisustvo vodećih znakova u nizu.
sintaksa:

int strspn(string str1, string str2)

Funkcija strspn() vraća dužinu početnog fragmenta stringa str1, koji se u potpunosti sastoji od znakova koji se nalaze u stringu str2.

echo strspn("www.spravkaweb.ru", "abc");
// Izlaz 3