• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak sprawdzić pierwsze parę znaków stringa?

0 głosów
983 wizyt
pytanie zadane 12 lipca 2018 w PHP przez Q7V Gaduła (4,250 p.)
Pobieram od użytkownika stringa. Chciałbym sprawdzić czy pierwsze powiedzmy 4 znaki zaczynają się od http i stworzyć dla takiego przypadku warunek. Jaka funkcja w PHP odpowiada za taką magię? c:

3 odpowiedzi

+1 głos
odpowiedź 12 lipca 2018 przez Oliwier Wolf Użytkownik (950 p.)
wybrane 13 lipca 2018 przez Q7V
 
Najlepsza

Cześć,
za pomocą strpos możesz uzyskać pozycje ciągu znaków w jakimś stringu.

$str = "http://www.costam.pl";
print(strpos($str,"http"));


Jeśli nie zostanie znalezione, to zwróci null.
W Twoim przypadku jest to warunek czy wynik strpos równa się 0.

komentarz 12 lipca 2018 przez Tomek Sochacki Ekspert (227,490 p.)
Tylko trzeba pamiętać o dwóch kwestiach - o ile dobrze pamiętam z PHP (a dawno go nie używałem) to metoda ta zraca index znalezionego początku dopasowania, co w tym wypadku zwróci liczbę zero - w JS zero konwertuje się niejawnie do false, w PHP chyba było tak samo (ale jeśli się mylę to mnie poprawcie). Jest to ważne np. jeśli wynik działania srtpos miałby służyć jako warunek w IF itp.

Druga kwestia to o ile się nie mylę to strpos nie ma opcji ustawienia ignorowania wielkości znaków (ale przygodę z PHP zakończyłem gdy nowością była wersja 5 więc może teraz jest inaczej), i jeśli wielkość liter nie ma mieć znaczenia to chyba można pomyśleć o regexp ale to już zależy od jakości danych wejściowych i pewności co do nich.
2
komentarz 12 lipca 2018 przez Comandeer Guru (607,250 p.)

Co do drugiego problemu – stripos (no bo dodanie parametru byłoby zbyt proste ;)).

Co do pierwszego problemu – prawda to, ale przecież i tak używamy === a nie ==, czyż nie? :P Ale fakt, o wiele sensowniejsze w takim wypadku wydaje się rozwiązanie z JS, gdzie odpowiednik tej funkcji zwraca -1, gdy string nie zostanie znaleziony.

Jeśli nie zostanie znalezione, to zwróci null. 

false, nie null

komentarz 12 lipca 2018 przez Tomek Sochacki Ekspert (227,490 p.)

Dzięki za doprecyzowanie, fakt, zapomniałem o stripos, chyba już PHP zaczyna coraz bardziej ulatniać się z mojej głowy... (i dobrze, nigdy się nie ubiliśmy :p)

A co do tego porównania to owszem, ja np. w ogóle nigdy nie stosuję == w JS, uważam, że nawet jeśli mielibyśmy porównać np. 1 == "1" to lepiej jawnie przekonwertować "1" na typ number i używać ===, ale często początkujący programiści używają ==. Zresztą chyba każdy przez to przechodził :)

+2 głosów
odpowiedź 12 lipca 2018 przez Ehlert Ekspert (215,070 p.)

Polecam zostawić strpos, regex i użyć parse_url

+1 głos
odpowiedź 12 lipca 2018 przez Mariusz08 Maniak (62,280 p.)
Można spróbować użyć wyrażeń regularnych.

Podobne pytania

0 głosów
2 odpowiedzi 14,343 wizyt
0 głosów
1 odpowiedź 498 wizyt
pytanie zadane 13 sierpnia 2020 w JavaScript przez Renzov Obywatel (1,220 p.)
0 głosów
1 odpowiedź 1,608 wizyt
pytanie zadane 23 października 2018 w C i C++ przez web Nowicjusz (160 p.)

93,599 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,082 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...