![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 1.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Czasami w skryptach widzę tablice z "aliasami" które są wyciągane przez preg_match i przypisywane do zmiennej np.
Cytat $sprawdany_string = 'bbbaaa/21' array('/[a-z]+\/:id/'); Zastanawiam się jak zrobić, aby sprawdzić czy ciąg pasuje do wyrażenia i aby skrypt wiedział że :id to w tym wypadku 21 i że jest to liczba czyli zakres [0-9]+ oraz aby to przypisać do jakiejś zmiennej. Wiem jak zamienić :id na [0-9]+ to nie problem i wtedy sprawdzam czy pasuje, ale jak konkretny :id przypisać wartość ze sprawdzanego ciągu? Tak kombinuje... zamiana :id na [0-9]+ to
Później sprawdzam czy $str pasuje do wyrażenia przez preg_match, jednak wcześniej chciałbym do jakiejs zmiennej przepisać wartość tego :id ... jak? np. $id = 21; Może explode i porównywanie do tablicy? Czy PHP ma w sobie jakieś aliasy dla wyrażeń? A ja szukam nie pod tą nazwą. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 374 Pomógł: 79 Dołączył: 6.04.2010 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Można przekazać tą wartość po prostu z jakiejś zmiennej PHP:
Tylko, że wtedy to jest zwykłe porównywanie łańcuchów i nie warto używać funkcji z wyrażeniami regularnymi. Jeśli chcesz sprawdzić czy w danym łańcuchu występuje konkretna wartość (inny konkretny łańcuch) to wystarczy strpos albo inna podobna funkcja albo, w skrajnym przypadku zwykłe porównanie:
Hmmm, nie jestem pewien czy nie za bardzo chcesz przekombinować. 21 (czy jakakolwiek inna liczba) to zawsze "[0-9]+" i sprawdzanie najpierw czy łańcuch spełnia wzorzec "[0-9]+" a potem czy to jest jakaś konkretna liczba jest zbędnym przetwarzaniem. Prościej od razu sprawdzić czy łańcuch zawiera daną liczbę i - dla pewności - czy jest ona w konkretnym miejscu (np.: na końcu danego łańcucha). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 05:07 |