PHP jezik se aktivno koristi među web programerima dugi niz godina. Kao iu svakom softverskom jeziku, PHP ima najbolje prakse i malo poznate greške/zloupotrebe. U ovoj lekciji PHP strpos() Govorit ćemo o tome kako na najbolji način iskoristiti njegovu funkciju i malo poznatim informacijama.
Nemojte upoređivati sa istinitim
u PHP jeziku strpos() funkcija vraća početnu poziciju traženog teksta. strpos() Kada koristimo funkciju dok tražimo da li je cilj pronađen u tekstu, kada je cilj pronađen 1, kada nije pronađen 0 vraća kod. Ako je cilj pronađen na samom početku traženog teksta, 0 vraća. Ovo nije baš greška u PHP-u, ali kao rezultat, kada se traži prisustvo ciljnog teksta u if upitu napisanom kao primer ispod, ciljni tekst je na početku. 0 To će uzrokovati grešku u softveru jer će se vratiti.
primjer:
$data = "Onur Özden Web Çözümleri";
$search = "Onur";
if (strpos($data, $search) === true) {
echo "Metinde '{$search}' ifadesi geçiyor";
} else { // Bu blok çalışacak
echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçmiyorU primjeru je drugi blok radio. Ovo nije u redu! Zato što se ime "Onur" spominje u tekstu koji smo koristili u primjeru. To je zato strpos() U funkciji, ako je traženi tekst na početku podataka, funkcija se zove "0 je vratiti odgovor. Dakle, kako da prevaziđemo ovaj problem? Trebamo li koristiti drugu funkciju? Ne. Nema potrebe za ovim. Postoji vrlo jednostavno rješenje za ovaj problem. Hajde da ispitamo primjer i detaljno ga razjasnimo.
$data = "Onur Özden Web Çözümleri";
$search = "Onur";
if (strpos($data, $search) !== false) { // Bu blok çalışacak
echo "Metinde '{$search}' ifadesi geçiyor";
} else {
echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçiyorU ovom primjeru, usporedba u bloku if radila je ispravno. Razlog je taj što su svi popularni programski jezici, uključujući PHP, pa čak i softverska logika 0 vrijednost false, 1 vrijednost true smatra se kao. Budući da je povratna vrijednost 0, kada se izvrši poređenje booleovog tipa u if bloku, vrijednost 0 se obrađuje kao netočna i dolazi do ove greške.
Koristite strogo poređenje kada upoređujete sa netačnim
Postoji još jedan vrlo važan detalj na koji moramo obratiti pažnju u prethodnom primjeru. Ako napravimo poređenje jednakosti (labavo poređenje) umjesto striktnog poređenja, ponovo ćemo naići na istu grešku. Budući da poređenje jednakosti ne dovodi u pitanje tip podataka, poređenje ekvivalencije također dovodi u pitanje tip podataka. Hajde da ispitamo netačan primer o čemu govorimo. Napravimo primjer bez poređenja ekvivalencije i vidimo rezultat
$data = "Onur Özden Web Çözümleri";
$search = "Onur";
if (strpos($data, $search) != false) {
echo "Metinde '{$search}' ifadesi geçiyor";
} else { // Bu blok çalışacak
echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçmiyorMožemo upravljati osjetljivošću velikih i malih slova
Funkcija strpos() podrazumevano je osetljiva na velika i mala slova. Ako želimo ukloniti ovu osjetljivost, moramo koristiti funkciju stripos(). Pogledajmo primjer funkcije stripos():
$data = "Onur Özden Web Çözümleri";
$search = "onur";
if (stripos($data, $search) !== false) { // Bu blok çalışacak
echo "Metinde '{$search}' ifadesi geçiyor";
} else {
echo "Metinde '{$search}' ifadesi geçmiyor";
}
// Çıktı: Metinde 'Onur' ifadesi geçiyorMožemo provjeriti da li se traženi tekst pojavljuje više od jednom pomoću funkcije strpos().
1. primjer:
Možemo provjeriti koliko se puta ciljni tekst pojavljuje u podacima pomoću funkcije strpos(). U 1. primjeru ćemo pokazati kreativan, ali jednostavniji i osnovni način da se to uradi, au 2. primjeru ćemo pokazati najbolji način, koji je mnogo praktičniji.
$data = "Onur Özden Web Çözümleri, Onur Özden tarafından kurulmuştur. Onur Özden ve ekibi ile web yazılım geliştirme, wordpress teknik destek ve seo hizmetleri sunar.";
$search = "Onur";
// undefined hatası almamak için değişkenleri tanımla ve varsayılan olarak 0 değerini ver;
$position = 0;
$count = 0;
while (($position = strpos($data, $search, $position)) !== false) {
$count++; // Kaçıncı kez geçtiğini say
$position++; // Sonraki arama için pozisyonu artır
}
// Sonucu yazdır
echo "Veri içerisinde toplam {$count} adet '{$search}' kelimesi geçiyor<br>";
// Çıktı: Veri içerisinde toplam 3 adet 'Onur' kelimesi geçiyor2. primjer:
$data = "Onur Özden Web Çözümleri, Onur Özden tarafından kurulmuştur. Onur Özden ve ekibi ile web yazılım geliştirme, wordpress teknik destek ve seo hizmetleri sunar.";
$search = "Onur";
// substr_count fonksiyonu ile $search ifadesinin $data içindeki toplam sayısını hesapla
$count = substr_count($data, $search);
// veri içerisinde hedef kelime geçmiyorsa "0 adet geçiyor" gibi anlamsız bir ifade çıktılanmaması için koşul
if ($count > 0) { // veride hedef ifade geçtiği için bu blok çalışacak
echo "Veri içerisinde toplam {$count} adet '{$search}' kelimesi geçiyor";
} else {
echo "Veri içerisinde '{$search}' kelimesi geçmiyor.";
}
// Çıktı: Veri içerisinde toplam 3 adet 'Onur' kelimesi geçiyorsubstr_count() Ukratko, funkcija izračunava koliko je podtekstova proslijeđeno u cilj i koliko puta. Detaljnu dokumentaciju i primjere ove funkcije možete pronaći ovdje -> https://www.php.net/manual/function.substr-count.php
O strpos()
U ovom članku strpos() Naučili smo kako iskoristiti njegovu funkciju na najbolji način i ispraviti najčešću zloupotrebu. strpos() sa svojom funkcijom stripos() i substr_count() Upoznali smo i njihove funkcije. Pratite nas za ostatak naše serije o najboljim pristupima kodiranju.



