Język PHP jest aktywnie wykorzystywany przez twórców stron internetowych od wielu lat. Jak w każdym języku oprogramowania, PHP ma najlepsze praktyki i mało znane błędy/nadużycia. W tej lekcji PHP strpos() Porozmawiamy o tym, jak najlepiej wykorzystać jego funkcję i mało znane informacje.
Nie porównuj z prawdą
w języku PHP strpos() funkcja zwraca pozycję początkową szukanego tekstu. strpos() Kiedy korzystamy z funkcji podczas wyszukiwania, czy cel znajduje się w tekście, kiedy cel zostaje znaleziony 1, gdy nie znaleziono 0 zwraca kod. Jeżeli cel został odnaleziony na samym początku szukanego tekstu, 0 powraca. Nie jest to dokładnie błąd w PHP, ale w rezultacie, gdy w zapytaniu if zapisanym jak w przykładzie poniżej sprawdzana jest obecność tekstu docelowego, tekst docelowy znajduje się na początku. 0 Spowoduje to błąd w oprogramowaniu, ponieważ zwróci .
Przykład:
$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çmiyorW tym przykładzie zadziałał blok else. To jest błędne! Ponieważ imię „Onur” zostało wspomniane w tekście, którego użyliśmy w przykładzie. To dlatego strpos() W funkcji, jeśli szukany tekst znajduje się na początku danych, funkcja nazywa się „0 jest zwrócenie odpowiedzi. Jak więc pokonać ten problem? Czy musimy użyć innej funkcji? Nie. Nie ma takiej potrzeby. Istnieje bardzo proste rozwiązanie tego problemu. Przeanalizujmy przykład i wyszczególnijmy go.
$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çiyorW tym przykładzie porównanie w bloku if zadziałało poprawnie. Powodem jest to, że wszystkie popularne języki programowania, w tym PHP, a nawet logika oprogramowania 0 wartość false, 1 wartość true jest uważany za. Ponieważ wartością zwracaną jest 0, gdy w bloku if przeprowadzane jest porównanie typu logicznego, wartość 0 jest przetwarzana jako fałszywa i pojawia się ten błąd.
Używaj ścisłego porównania podczas porównywania z fałszem
Jest jeszcze jeden bardzo ważny szczegół, na który musimy zwrócić uwagę w poprzednim przykładzie. Jeśli zamiast porównania ścisłego dokonamy porównania równościowego (luźnego porównania), ponownie napotkamy ten sam błąd. Ponieważ porównanie równości nie kwestionuje rodzaju danych, porównanie równoważności kwestionuje również typ danych. Przeanalizujmy nieprawidłowy przykład tego, o czym mówimy. Zróbmy przykład bez porównania równoważności i zobaczmy wynik
$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żemy zarządzać wrażliwością na przypadki
W funkcji strpos() domyślnie rozróżniana jest wielkość liter. Jeśli chcemy usunąć tę wrażliwość, musimy użyć funkcji stripos(). Spójrzmy na przykład funkcji 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çiyorZa pomocą funkcji strpos() możemy sprawdzić, czy wyszukiwany tekst występuje więcej niż raz
1. przykład:
Za pomocą funkcji strpos() możemy sprawdzić, ile razy docelowy tekst pojawia się w danych. W pierwszym przykładzie pokażemy kreatywny, ale prostszy i podstawowy sposób, aby to zrobić, a w drugim przykładzie pokażemy najlepszy sposób, który jest znacznie bardziej praktyczny.
$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. przykład:
$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() Krótko mówiąc, funkcja oblicza, ile podtekstów zostało przekazanych w celu i ile razy. Szczegółową dokumentację i przykłady tej funkcji znajdziesz tutaj -> https://www.php.net/manual/function.substr-count.php
Informacje o strpos()
W tym artykule strpos() Dowiedzieliśmy się, jak najlepiej wykorzystać jego funkcję i skorygować najczęstsze niewłaściwe użycia. strpos() z jego funkcją stripos() oraz substr_count() Poznaliśmy także ich funkcje. Bądź na bieżąco z resztą naszej serii na temat metod kodowania najwyższej jakości.



